Laravel Eloquent как получить вторую или третью запись?
У меня есть модель заказа и продукта.
"Order"
Продукт HasMany (и продукт принадлежит заказу)...
Скажем, я хочу отобразить 3 продукта моего заказа, как это сделать?
Я знаю, что первый может быть получен как $order->products->first()
... но как получить второй и третий продукт?
Я пробовал $order->products->find(1)
, но "1" представляет собой идентификатор продукта... который я не хочу знать...
Ответы
Ответ 1
Наконец, я нашел решение, это правильный синтаксис:
$order->products->get(0)->name; will return the first record
$order->products->get(1)->name; will return the second record
$order->products->get(2)->name; will return the third record
И так далее...
Ответ 2
$order->products()->skip(1)->first();//Second row
$order->products()->skip(2)->first();//Third row
....
Быстрее, чем загрузка всех продуктов и получение только первого, второго и т.д.
Вместо этого , если вам нужны и второй, и третий, вы можете получить только их в одном запросе без загрузки других строк, используя аналогичный подход:
$order->products()->skip(1)->take(2)->get(); //Skip first, take second and third
Ответ 3
Вы можете просто попробовать следующее:
$order->products->take(3)->get();
Ответ 4
Скажем, вы хотите второй продукт,
если вы уверены, что ключи массива совпадают с индексами массива, сделайте это
$order->products->get(1)->name;
если вам нужен второй элемент и вы не уверены в ключах массива, сделайте это
$order->products->slice(1, 1)->first()->name;