Laravel内部连接两个查询


Laravel inner join on two queries

我有一个查询,我将两个查询连接起来以获得我想要的东西,我可以在SQL中很好地管理它,但我现在完全不知道如何为Laravel编写它。这是SQL:

select *
from 
    (
        select stu.s_nid as student_nid, stu.name as student_name, vote.id as vote_id
        from student stu
        left join vote on vote.student_id = stu.id
        where vote.vote_no != 0
    ) as q1
    inner join 
    (
        select stu.s_nid as nominee_nid, stu.name as nominee_name, vnd.nominee_type_id, vnd.vote_id, nt.name_ar
        from vote_nominee_details vnd
        left join nominee nom
        on nom.id = vnd.nominee_id
        left join student stu
        on stu.id = nom.student_id
        left join vote
        on vote.id = vnd.vote_id
        left join nominee_type nt
            on nt.id = vnd.nominee_type_id
        where vnd.vote_id is not null
        and vote.vote_no != 0
    ) as q2 on q1.vote_id = q2.vote_id

如有任何帮助,将不胜感激

只需尝试此

$result = DB::select($sql);

你也可以试试这个

DB::table(DB::raw('(select stu.s_nid as student_nid, stu.name as student_name, vote.id as vote_id
        from student stu left join vote on vote.student_id = stu.id
        where vote.vote_no != 0) as q1'))
->join(DB::raw('(select stu.s_nid as nominee_nid, stu.name as nominee_name, vnd.nominee_type_id, vnd.vote_id, nt.name_ar from vote_nominee_details vnd 
        left join nominee nom on nom.id = vnd.nominee_id
        left join student stu on stu.id = nom.student_id
        left join vote on vote.id = vnd.vote_id
        left join nominee_type nt on nt.id = vnd.nominee_type_id
        where vnd.vote_id is not null and vote.vote_no != 0) as q2'), 'q2.vote_id', '=', 'q1.vote_id')
->get();