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

如何结合orderBy与多预加载关联关系实现差异化排序?

Laravel 预加载关联时分别设置排序规则

你可以通过给with()方法传递数组的方式,为每个需要排序的关联关系单独定义查询逻辑,在闭包里使用orderBy()指定排序规则:

$model = $class::where('id', $id)
    ->with([
        'brand',
        'images' => function ($query) {
            // 按priority字段升序排序,需要降序就换成'desc'
            $query->orderBy('priority', 'asc');
        },
        'price' => function ($query) {
            // 按price字段升序排序
            $query->orderBy('price', 'asc');
        }
    ])
    ->firstOrFail();

关键说明:

  • 数组的键对应关联关系的名称(比如images、price),值是一个闭包函数,用来定制该关联的查询
  • 不需要排序的关联(比如brand),直接保留关联名称即可,无需额外处理
  • 可根据业务需求修改orderBy()的第二个参数,asc是升序,desc是降序

内容的提问来源于stack exchange,提问作者Kos-Mos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:42:01