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

Eloquent关联结果排序问题:无需SQL RAW实现关联表排序

解决Eloquent关联模型排序问题(无需RAW语句)

没问题!你遇到的「Unknown column」错误很常见——直接在主查询的orderBy里用关联表的字段时,Eloquent会把这个排序条件加到主表(attribute_groups)的查询语句中,而主表根本没有iteration字段,自然就报错了。

不用SQL RAW语句完全可以实现关联模型的排序需求,只需要在with方法里传入闭包,给关联的attribute模型单独指定排序规则就行:

$groups = AttributeGroup::with(['attribute' => function ($query) {
    $query->orderBy('iteration', 'DESC');
}])->where('page_id', $page->id)->get();

原理说明

这个写法的逻辑是:

  1. 先执行主查询,筛选出page_id匹配的所有AttributeGroup记录;
  2. 再单独查询每个分组对应的attribute数据时,自动带上orderBy('iteration', 'DESC')的条件,这样每个分组下的属性就会按你期望的降序排列了。

如果之后你需要同时对主表和关联表排序,也可以用类似的方式分别给主查询和关联查询加orderBy条件,完全不需要依赖RAW语句~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:41:37