【问题标题】:Laravel Eloquent query with join, count and group byLaravel Eloquent 查询,带有连接、计数和分组依据
【发布时间】: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 表是两个关系。我应该如何正确编写上面的查询?

【问题讨论】:

    标签: laravel eloquent


    【解决方案1】:
     return Order::groupBy('users.id')
            ->select(DB::raw('COUNT(orders) AS TOTAL_ORDERS'))
            ->addSelect('name')
            ->get();
    

    你可以数数 DB:raw 我认为它对你有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-04
      • 1970-01-01
      • 2011-12-29
      • 2021-07-04
      • 2013-07-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多