首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Laravel中根据另一个表的标准查询一个表?

如何在Laravel中根据另一个表的标准查询一个表?
EN

Stack Overflow用户
提问于 2019-01-03 08:45:57
回答 1查看 207关注 0票数 0

在我的laravel项目中,我有一份清单和一张医药表,其格式如下:

库存表

代码语言:javascript
复制
  id   |   medicine_id   |  expiry_date
-------|-----------------|-------------
  1    |       1         |  13-11-2021
  2    |       2         |  01-01-2020
  3    |       2         |  23-05-2024

医学表

代码语言:javascript
复制
  id   |     name        |  category
-------|-----------------|-------------
  1    |    Hemophine    |  Syringe
  2    |   andrenalin    |  Tablet
  3    |    aspirin      |  Capsule

这些模型如下:

库存模型

代码语言:javascript
复制
class Inventory extends Model
{
    public $incrementing = false;

    public function medicine(){
        return $this->belongsTo('App\Medicine', 'medicine_id');
    }
}

医学模型

代码语言:javascript
复制
class Medicine extends Model
{
    public $incrementing = false;

    public function inventory(){
       return $this->hasMany('App\Inventory', 'medicine_id');
    }
}

为了检索所有特定类别的库存,如注射器,我尝试了急切的加载,但无法找出缺陷。以下是我用注射器分类得到所有库存的方法,但没有奏效。

代码语言:javascript
复制
public function index()
    {

        $medicines = Inventory::where('medicine_id'->category, "Syringe")->get();

        foreach($medicines as $medicine){
            echo $medicine->medicine->name ." ".$medicine->expiry_date;
            echo "<br>";
        }

    }

现在,是否有得到所有库存项目,根据他们的类别,他们在其中?在这种情况下属于“注射器”类?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-03 09:02:02

您的语法有点错误,为了加载您需要使用withwhere函数是where('column', value)的每个库存的药物,所以将其更改为:

代码语言:javascript
复制
$medicines = Inventory::with([
  'medicine' => function($query) {
       $query->where('category', "Syringe");
  }    
])->get();

或者更好的情况是:

代码语言:javascript
复制
$medicines = Medicine::with('inventory')->where('category', 'Syringe')->get();
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54018906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档