gpt4 book ai didi

mysql - 在 Laravel Eloquent 中使用 group by 的子查询

转载 作者:行者123 更新时间:2023-11-29 05:52:42 26 4
gpt4 key购买 nike

我想将以下 sql 查询传递给 laravel:

SELECT total.candidate_name, total.name, total.questions, COUNT(total.grade)
FROM
(
SELECT c.name as candidate_name, j.name, t.questions, g.grade
FROM candidates as c
INNER JOIN job_openings as j on c.fk_id_job_opening=j.id_job_opening
INNER JOIN interview_templates as t on j.fk_id_template=t.id_template
INNER JOIN responses as r on r.fk_id_candidate=c.id_candidate
INNER JOIN grades as g on r.id_response=g.fk_id_response
WHERE g.fk_id_user='some_id'
) as total
GROUP BY total.candidate_name, total.name, total.questions;

some_id 将由 Auth::id() 方法接收,直到现在我有了运行良好的子查询:

$subquery = Candidate::select('candidates.name AS c_name', 'j.name AS j_name', 't.questions AS questions', 'g.grade AS grade')
->join('job_openings AS j', 'candidates.fk_id_job_opening', '=', 'j.id_job_opening')
->join('interview_templates AS t', 'j.fk_id_template', '=', 't.id_template')
->join('responses AS r', 'r.fk_id_candidate', '=', 'candidates.id_candidate')
->join('grades AS g', 'r.id_response', '=', 'g.fk_id_response')
->where('g.fk_id_user',Auth::id())
->get();

但是我在实现我的目的的语法上遇到了麻烦,我真的是 laravel 的新手所以也许这不是进行查询的好方法。

非常感谢您的帮助。

最佳答案

我认为您可以尝试在这样的一个查询中使用查询生成器:

 return DB::table('candidates AS c')
->select( DB::raw('c.name AS c_name,j.name AS j_name,t.questions AS questions, count(g.grade) as countGrade'))
->join('job_openings AS j', 'c.fk_id_job_opening', '=','j.id_job_opening')
->join('interview_templates AS t', 'j.fk_id_template', '=', 't.id_template')
->join('responses AS r', 'r.fk_id_candidate', '=', 'c.id_candidate')
->join('grades AS g', 'r.id_response', '=', 'g.fk_id_response')
->where('g.fk_id_user',Auth::id())
->groupBy('c_name', 'j_name', 'questions')
->get();

您需要 DB::raw 进行计数(g.grade)

关于mysql - 在 Laravel Eloquent 中使用 group by 的子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52636204/

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