【问题标题】:laravel get session data and order by latestlaravel 获取会话数据并按最新排序
【发布时间】:2021-01-01 10:00:22
【问题描述】:

我正在使用 Laravel 处理会话数据,我可以将会话存储到变量中并检索整个数据。但我的问题是我想从存储的会话中将会话订购为最新的 5 个 id。

存储会话

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

检索会话

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

检索工作正常,我只想从会话products.recently_viewed 中获取最新的 5 个 id

例如

来自会话的数据

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

我想获取的数据

[2,11,9,8,6]

【问题讨论】:

    标签: laravel session


    【解决方案1】:

    你需要 array_slice 和 array_reverse

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

    -5 表示“从数组末尾之前的五个元素开始”。 反过来会颠倒数组的顺序,所以最后一个是第一个。

    【讨论】:

    • 感谢@Cameron,我也想要一个唯一的来过滤重复的 id,我应该这样做吗? $items = array_reverse(array_slice(array_unique($recently_viewed_ids), -5));
    猜你喜欢
    • 2015-11-06
    • 2020-03-31
    • 2018-06-29
    • 2018-06-06
    • 2015-03-07
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    • 2020-04-06
    相关资源
    最近更新 更多