从 laravel 的不同表中获取每个 id 的总数

Posted

技术标签:

【中文标题】从 laravel 的不同表中获取每个 id 的总数【英文标题】:get total count in each ids from different table in laravel 【发布时间】:2019-07-04 16:08:38 【问题描述】:

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

但现在我想从用户表中的用户 ID 一次分配的作业表中获取所有添加的作业。

这个函数是我写的

$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          |
|---------------------|------------------|

【问题讨论】:

【参考方案1】:

您需要为用户的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();

【讨论】:

谢谢。有用。如何在我的视图表中显示此数组计数的不同颜色 如何使用此查询在用户表中显示其他详细信息,例如姓名、电子邮件 @KalanaMihiranga 调整 ->select(...) 方法。如果要从users 表中选择所有列,则将'users.user_id' 切换为'users.*'。 Check out the documentation 在查询生成器上了解更多信息。 语法错误或访问冲突:1055 'jobnetuva.users.id' 不在 GROUP BY 中 @Kalana 你确定我们在这里谈论的是 mysql 吗?因为默认情况下 MySQL 允许对非聚合列使用部分 group by 子句,并且不应产生任何错误。 Check answer to this question。所以要解决这个限制,你必须groupBy(...)所有你想从users中选择的列(不仅仅是user_id)。【参考方案2】:

选择不同的用户 ID 循环到其中以计算每个用户的计数

【讨论】:

【参考方案3】:

试试这个:

添加以下与用户模型的关系:

public function assignJobs()

    return $this->hasMany(AssignJob::class, 'user_id', 'user_id');

在控制器中:

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

【讨论】:

以上是关于从 laravel 的不同表中获取每个 id 的总数的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.2 Eloquent ORM 从 3 个表中获取数据

Laravel - 从不同的表中获取总和并计算

Laravel:如何从具有关系的 3 个表中获取数据

从多个表中获取数据 Laravel

我想从 Laravel 5.7 的不同表中获取单个数组中的数据

输入详细信息表时,我无法从主表中获取 ID(Laravel 8)