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;