Модель Laravel Eloquent с несколькими идентификаторами - PullRequest
0 голосов
/ 27 апреля 2018

У меня будет таблица, полная информации, которая включает в себя другие таблицы (отношения). Большая часть информации в этой таблице будет иметь только идентификаторы соответствующей таблицы. Если бы я использовал «продукты» в качестве примера для этой таблицы, для некоторых столбцов это могло бы выглядеть так:

id  |  name  |  type_id  |  price_id  |  location_id  |  sale_id
----------------------------------------------------------------
 1  |  prod1 |     1     |      1     |       2       |     4
 2  |  prod2 |     2     |      1     |       1       |     1
 3  |  prod3 |     3     |      2     |       6       |     2
 4  |  prod4 |     1     |      2     |       3       |     4

Я пытаюсь взять эту таблицу "продукты" и выбросить ее в список. Мне нужно будет просмотреть все элементы в этих столбцах, как я выкинуть его (отношение). Я знаю, как это сделать, принадлежит ToMany и hasMany, но я не уверен, как я могу сделать это одним выстрелом с моделью Eloquent, если у меня есть модель "products"? Должен ли я просто сделать таблицу продуктов просто сводной таблицей? Могу ли я сделать это с моделью Eloquent или я должен использовать построитель запросов напрямую? Я думаю, что если бы я использовал withPivot, он вернул бы дополнительные столбцы, но необработанное значение идентификатора из столбца. Мне понадобится поиск значения из соответствующей таблицы (отношение).

Попробовал что-то вроде этого:

public function productItems(){
  return $this->belongsToMany(Product::class)->withPivot(["type_id","price_id",...]);
}

1 Ответ

0 голосов
/ 27 апреля 2018

Как подсказывает @BagusTesa, вы должны стремиться загрузить ваши отношения:

$products = Product::with(['type', 'price', 'location'])->get();

Это запросит связанные модели, позволяя вам получить к ним доступ как к свойствам модели:

foreach ($products as $product){
    // $product->type;
    // $product->price;
    // $product->location;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...