Как запросить таблицу на основе критериев другой таблицы в Laravel? - PullRequest
0 голосов
/ 03 января 2019

В моем проекте 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 голосов
/ 03 января 2019

Ваш синтаксис немного неправильный, чтобы загрузить лекарство для каждого инвентаря, вам нужно использовать with, а функция where равна where('column', value) Так что измените его на:

$medicines = Inventory::with([
  'medicine' => function($query) {
       $query->where('category', "Syringe");
  }    
])->get();

или, наоборот, лучше:

$medicines = Medicine::with('inventory')->where('category', 'Syringe')->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...