Php 从laravel中的不同表中获取每个ID的总计数

Php 从laravel中的不同表中获取每个ID的总计数,php,mysql,laravel,Php,Mysql,Laravel,我想从另一个名为assign job的表中获取每个id的总计数。我将用户数据保存到我的users表中,并将3个作业添加到具有用户id的assign job表中 但现在我想从assign job表中获取添加的作业总数,其中用户ID同时位于我的users表中 我写了这个函数 $assignjob = DB::table('users') ->join('assign_jobs', 'users.user_id', '=', 'assign_jobs.user_id') ->get() -

我想从另一个名为assign job的表中获取每个id的总计数。我将用户数据保存到我的users表中,并将3个作业添加到具有用户id的assign job表中

但现在我想从assign job表中获取添加的作业总数,其中用户ID同时位于我的users表中

我写了这个函数

$assignjob = DB::table('users')
->join('assign_jobs', 'users.user_id', '=', 'assign_jobs.user_id')
->get()
->count(); 
但这显示了分配作业表中的总计数。但是我想得到每个用户ID的不同计数

我想使用此分配作业总计数值分配不同的颜色行

有人能帮我吗

用户表:

|---------------------|------------------|
|      user_id        |     name         |
|---------------------|------------------|
|          123        |     john         |
|---------------------|------------------|
|          234        |     peter        |
|---------------------|------------------|
|---------------------|------------------|
|      id             |     user_id      |
|---------------------|------------------|
|          1          |     123          |
|---------------------|------------------|
|          2          |     123          |
|---------------------|------------------|
|          3          |     234          |
|---------------------|------------------|
|          4          |     234          |
|---------------------|------------------|
分配作业表:

|---------------------|------------------|
|      user_id        |     name         |
|---------------------|------------------|
|          123        |     john         |
|---------------------|------------------|
|          234        |     peter        |
|---------------------|------------------|
|---------------------|------------------|
|      id             |     user_id      |
|---------------------|------------------|
|          1          |     123          |
|---------------------|------------------|
|          2          |     123          |
|---------------------|------------------|
|          3          |     234          |
|---------------------|------------------|
|          4          |     234          |
|---------------------|------------------|

选择distinct usesr ID循环到其中,以获得每个用户的计数

您需要为用户的
ID
列使用
GROUP BY
子句,并将
count()
添加到您的选择中。尝试:

DB::table('users')
    ->select('users.user_id', DB::raw('COUNT(assign_jobs.user_id) AS jobs_count'))
    ->join('assign_jobs', 'users.user_id', '=', 'assign_jobs.user_id')
    ->groupBy('users.user_id')
    ->get();
试试这个:

将以下关系添加到用户模型:

public function assignJobs()
{
    return $this->hasMany(AssignJob::class, 'user_id', 'user_id');
}
在控制器中:

User::withCount('assignJobs')->get();

非常感谢。它起作用了。如何在我的视图表中显示此数组计数的不同颜色如何在用户表中显示其他详细信息,如姓名、电子邮件query@KalanaMihiranga调整
->选择(…)
方法。如果要从
users
表中选择所有列,请将
'users.user\u id'
切换到
'users.*'
。有关详细信息,请访问查询生成器。语法错误或访问冲突:1055“jobnetuva.users.id”不在组中BY@Kalana你确定我们在谈论MySQL吗?因为默认情况下,MySQL允许对非聚合列使用分部
group by
子句,并且不应产生任何错误。因此,要解决此限制,您必须
groupBy(…)
所有要从
users
中选择的列(不仅仅是
userid
)。