gpt4 book ai didi

php - 在 Laravel 语句中使用多个连接覆盖值

转载 作者:行者123 更新时间:2023-11-29 04:04:50 25 4
gpt4 key购买 nike

我正在尝试创建一个 Laravel 语句,它应该为每个用户返回正确的答案数量和问题数量,如下所示:

$users = User::join('user_answers', 'users.id', '=', 'users_answers.user_id')
->join('user_questions', 'users.id', '=', 'user_questions.user_id')
->select(
'users.id',
'users.username',
DB::raw('COUNT(user_answers.user_id) AS answers'),
DB::raw('COUNT(user_questions.user_id) AS questions')
)
->groupBy('users.id');

注意:需要 groupBy 才能工作,因为它在 DataTables 中使用,否则它只会显示一行。

当我尝试:

dd($users->first());

我得到的是这个:

Example

如您所见,由于某些原因,问题和答案的值是相同的,而且是不正确的。我想连接之间存在某种重叠。

例如,如果我删除其中一个联接,只保留其中一列,数字将正确显示,如下所示:

Example 2

老实说,我在这里很迷路,希望得到一些帮助。

谢谢!

最佳答案

我很长时间没有使用 Eloquent 了,所以我不知道是否有一种“ Eloquent ”的方式可以通过单个查询来完成此操作。但在 SQL 中,我会在 SELECT 子句中使用相关子查询:

$users = User::select(
'users.id',
'users.username',
DB::raw('(
SELECT COUNT(*)
FROM user_answers
WHERE users_answers.user_id = users.id
) AS answers'),
DB::raw('(
SELECT COUNT(*)
FROM user_questions
WHERE user_questions.user_id = users.id
) AS questions'),
);

关于php - 在 Laravel 语句中使用多个连接覆盖值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55197927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com