【问题标题】:Use sql queries in Laravel 6 to count the number of workers in each department在 Laravel 6 中使用 sql 查询统计每个部门的工人数
【发布时间】:2019-10-16 11:06:16
【问题描述】:

我是 laravel 和 sql 的新手。我有两个模型(工人和部门),每个模型都有一对多的关系。每个模型都有数据库表工人和部门。我的问题是:

  1. 能否在 laravel 6 中使用 sql 查询统计每个部门的员工人数?
  2. 我们可以在控制器或模型中在哪里使用这个 sql 查询?

我在控制器中使用了这个查询,但给了我错误,它有什么问题?

public function count()
{
   SELECT COUNT(id), department FROM Worker GROUP BY department; 
}

【问题讨论】:

  • 分享你的模型关系,也分享你遇到的错误。

标签: sql laravel


【解决方案1】:

您的Department 模特:

class Department extends Model
{

    public function workers()
    {
        return $this->hasMany('App\Worker');
    }

}

所以,你可以这样计算每个部门有多少员工:

$departments = App\Department::withCount('workers')->get();

另见:

Counting Related Models

Laravel best practices

【讨论】:

  • @RayannNarayan 我们可以使用 count() 代替 withCount()。
【解决方案2】:

要在 Laravel 控制器中使用原始查询,您必须在查询构建器中组合它。这将起作用:

DB::raw("SELECT COUNT(id), department FROM Worker GROUP BY department");

【讨论】:

    猜你喜欢
    • 2015-04-28
    • 1970-01-01
    • 2021-12-19
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    相关资源
    最近更新 更多