Laravel Eloquent 查询,带有连接、计数和分组依据
Posted
技术标签:
【中文标题】Laravel Eloquent 查询,带有连接、计数和分组依据【英文标题】:Laravel Eloquent query with join, count and group by 【发布时间】:2022-01-08 03:17:56 【问题描述】:我正在尝试重新制作此查询:
return DB::select(DB::raw("SELECT COUNT(orders.id), name FROM orders JOIN users ON orders.manager_id = users.id GROUP BY users.id"));
我有Order
模型,它使用belongsTo()
方法链接到另一个表,其中有几个:
public function user()
return $this->belongsTo(User::class);
public function post()
return $this->belongsTo(Post::class);
public function manager()
return $this->belongsTo(User::class, 'manager_id');
当我使用像 Order::all()
这样的简单查询时,它可以正常工作,但我尝试调用它:
return Order::groupBy('users.id')
->selectRaw('COUNT(orders.id), name')
->get();
当然,Laravel 不知道我应该使用用户名还是管理员名,因为它与 Order
中的 users
表是两个关系。我应该如何正确编写上面的查询?
【问题讨论】:
【参考方案1】: return Order::groupBy('users.id')
->select(DB::raw('COUNT(orders) AS TOTAL_ORDERS'))
->addSelect('name')
->get();
你可以数数 DB:raw 我认为它对你有用。
【讨论】:
以上是关于Laravel Eloquent 查询,带有连接、计数和分组依据的主要内容,如果未能解决你的问题,请参考以下文章
如何将左连接横向 SQL 查询转换为 Laravel Eloquent 查询?
用 Laravel/Eloquent 为 Yajra DataTables 编写连接查询的慢 MySQL
Laravel 6,MYSQL - 如何使用 Laravel Querybuilder 或 Model Eloquent 将子查询与 GroupBY 左连接?