TP5 \app\admin\model\Admin::with(['consults' => function ($query) { $query->alias('c')->join('order o', 'o.consult_id = c.id', 'LEFT')->field('c.sales_id, sum(o.amount) as total_amount'); }]) ->whereIn('id', $sales_ids) ->order('total_amount', 'DESC') ->paginate($this->pagesize); order排序报错
时间: 2023-08-19 10:03:55 浏览: 161
Smart Garden-Alexa咨询并自动化您的花园-项目开发
你好,根据你提供的代码,报错的原因可能是在 `order` 排序时无法找到 `total_amount` 字段。这是因为 `total_amount` 是一个关联查询中的计算字段,需要使用 `having` 而不是 `order` 进行排序。
你可以尝试将代码修改为以下形式,使用 `having` 进行排序:
```
TP5 \app\admin\model\Admin::with(['consults' => function ($query) {
$query->alias('c')->join('order o', 'o.consult_id = c.id', 'LEFT')->field('c.sales_id, sum(o.amount) as total_amount');
}])
->whereIn('id', $sales_ids)
->having('total_amount', '>', 0)
->order('total_amount', 'DESC')
->paginate($this->pagesize);
```
在这个修改后的代码中,我们使用了 `having` 条件来筛选出 `total_amount` 大于 0 的结果,然后再使用 `order` 进行排序。这样就可以避免报错了。
阅读全文