#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));