如何在Laravel中基于另一个表的条件查询表?

时间:2019-01-03 08:45:57

标签: laravel eloquent

在laravel项目中,我有一个清单和一个药品表,其格式如下:

库存表

  id   |   medicine_id   |  expiry_date
-------|-----------------|-------------
  1    |       1         |  13-11-2021
  2    |       2         |  01-01-2020
  3    |       2         |  23-05-2024

药物表

  id   |     name        |  category
-------|-----------------|-------------
  1    |    Hemophine    |  Syringe
  2    |   andrenalin    |  Tablet
  3    |    aspirin      |  Capsule

模型设置如下:

库存模型

class Inventory extends Model
{
    public $incrementing = false;

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

医学模型

class Medicine extends Model
{
    public $incrementing = false;

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

为了检索具有特定类别(如注射器)的所有清单,我尝试了快速加载,但无法找出缺陷。这是我为所有具有“注射器”类别的清单所做的工作,但是没有用。

public function index()
    {

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

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

    }

现在,是否总能根据它们所在的类别来获取所有库存项目?在这种情况下属于“注射器”类别?

1 个答案:

答案 0 :(得分:3)

您的语法有点错误,为了为每个库存装载药品,您需要使用user=> ,而leiningen函数是with 因此,将其更改为:

where

或者甚至更好:

where('column', value)