Как выполнить итерацию foreach l oop, начиная с последнего элемента в php? - PullRequest
1 голос
/ 18 июня 2020

У меня есть набор результатов, полученный из базы данных в laravel с помощью этого кода.

$products = Product::whereNull('box_size')->get();

В переменной $ products около 18000 объектов. Мне нужно получить предыдущий объект последнего объекта из списка. Как я могу это сделать? Есть ли способ перебрать foreach l oop из последнего набора результатов?

Ответы [ 4 ]

1 голос
/ 18 июня 2020

Если вам нужна только эта одна запись, будьте более точными в запросе, чтобы избежать дополнительной загрузки и обработки данных:

$products = Product::whereNull('box_size')
                   ->orderBy('created_at', 'DESC')
                   ->skip(1)
                   ->take(1)
                   ->get();
0 голосов
/ 18 июня 2020
  1. Вы можете отсортировать результаты в порядке убывания, и тогда второй элемент будет тем, что вы хотите:
$products = Product::orderBy('id', DESC)->whereNull('box_size')->get();
$item = $products[1];
Прямой доступ к элементу из объекта Collection:
$products = Product::whereNull('box_size')->get();

$item = $products->get($products->count() - 2);

//or pop
$products->pop()
$item = $products->pop();
0 голосов
/ 18 июня 2020

Упомянутое выше вы можете сделать это с помощью своей модели:

$products = Product::latest()->whereNull('box_size')->get();

Это даст вам красноречие для всех продуктов, отсортированных по DES C в столбце created_at.

0 голосов
/ 18 июня 2020

Вы можете легко сделать это из своей модели (для последних 10 запросов):

$products = Product::orderBy('id', DESC)->whereNull('box_size')->take(10)->get();

Только для последнего запроса:

$products = Product::orderBy('id', DESC)->whereNull('box_size')->first();

Или, используя foreach l oop get только 10 результат:

@php
    $i= 0;
@endphp

@foreach($all as $data) {
   $i++;
   include $data->name;
   if($i == 10) break;
 }
@endforeach
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...