laravel получает данные сеанса и упорядочивает по последней версии

#laravel #session

#laravel #сеанс

Вопрос:

Я работаю над данными сеанса с помощью Laravel, и я могу сохранять сеансы в переменной и извлекать все данные. Но моя проблема в том, что я хочу упорядочить сеанс по последним 5 идентификаторам из сохраненного сеанса.

Сохранение сеанса

 session()->push('products.recently_viewed', $product->getKey());
  

Получение сеанса

 $ids = session()->get('products.recently_viewed');
$recently_viewed = Product::whereIn('id', $ids)->get();
  

Извлечение работает нормально, я хочу получить только последние 5 идентификаторов из сеанса products.recently_viewed

например

данные из сеансов

 [1,3,7,6,8,9,11,2]
  

данные, которые я хочу получить

 [2,11,9,8,6]
  

Ответ №1:

Вам нужны array_slice и array_reverse

 $items = array_reverse(array_slice($yourSessionArray, -5));
  

-5 означает «начинать с пяти элементов до конца массива».
обратное изменение изменит порядок массива, поэтому последний будет первым.

Комментарии:

1. спасибо @Cameron, мне также нужен уникальный идентификатор для фильтрации дубликатов, должен ли я это сделать? $items = array_reverse(array_slice(array_unique($recently_viewed_ids), -5));