You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel查询:如何按featured_at、ID、sold规则排序商品数据

调整Laravel查询排序以实现预期规则

你的核心问题是当前排序逻辑未区分商品的三类状态优先级,以下是调整后的查询代码:

$items = Item::where('status', 'Active')
    ->whereNull('deleted_at')
    ->orderByRaw("CASE
        WHEN featured_at IS NOT NULL THEN 0
        WHEN sold IS NULL THEN 1
        ELSE 2
    END")
    ->orderByDesc('featured_at')
    ->orderByDesc('id')
    ->orderByDesc('sold')
    ->paginate(12);

代码说明:

  • 优先级分组:通过orderByRaw中的CASE语句给商品分配排序优先级:
    • 推荐商品(featured_at不为NULL)标记为0,排在最前面
    • 普通未售出商品(featured_at为NULL且sold为NULL)标记为1,排在中间
    • 售出商品(sold不为NULL)标记为2,排在最后
  • 组内排序:
    1. 推荐商品组按featured_at降序排列,保证最新推荐的商品靠前
    2. 普通未售出商品组按id降序排列
    3. 售出商品组按sold降序排列,最新售出的商品在本组内靠前

内容的提问来源于stack exchange,提问作者0x9342812j1o

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 23:40:07