簡體   English   中英

我無法將Mysql查詢轉換為laravel查詢構建器

[英]I'm not able to convert the Mysql query into laravel query builder

我正在努力將以下MySQL查詢轉換為laravel查詢構建器。 它里面有很多連接和子查詢。 有人可以幫幫我嗎?

MYSQL查詢:

SELECT  a.id , b.*, a.agent_id, td.contacts, td.addresses 
FROM teams a  
left join team_details as td on td.team_id = a.id
    LEFT OUTER JOIN
    (
        SELECT m.id, m.due_date, t.team_id, m.department, m.assigned_to , cm.title, u.name
        FROM (
            SELECT team_id, MAX(due_date) AS due_date
            FROM campaign_activities where task_status=false and due_date is not null
            GROUP BY team_id
            ) t JOIN campaign_activities m ON m.team_id = t.team_id AND t.due_date = m.due_date
            left join campaign_activity_masters cm on cm.id = m.camp_activity_id  
            left join users u on u.id = m.assigned_to 
    ) b ON a.id = b.team_id  
order by a.id

我正在嘗試類似下面的東西但是因為它有里面的子查詢而陷入了LEFT OUTER JOIN :)。

DB::table('teams as a')
->leftjoin('team_details as td', 'td.team_id','=','a.id')
->select('a.id', 'b.*', 'a.agent_id','td.contacts','td.addresses')
->leftouterjoin(DB::select(DB::raw('SELECT m.id, m.due_date, t.team_id, m.department, m.assigned_to , cm.title, u.name
FROM (
    SELECT team_id, MAX(due_date) AS due_date
    FROM campaign_activities where task_status=false and due_date is not null
    GROUP BY team_id
    ) t JOIN campaign_activities m ON m.team_id = t.team_id AND t.due_date = m.due_date
    left join campaign_activity_masters cm on cm.id = m.camp_activity_id  
    left join users u on u.id = m.assigned_to')))
->get();

有什么建議嗎? 我想為此查詢構建器應用paginate函數paginate()而不是get()

我想你應該試試。

$cards = DB::select("SELECT  a.id , b.*, a.agent_id, td.contacts, td.addresses 
FROM teams a  
left join team_details as td on td.team_id = a.id
    LEFT OUTER JOIN
    (
        SELECT m.id, m.due_date, t.team_id, m.department, m.assigned_to , cm.title, u.name
        FROM (
            SELECT team_id, MAX(due_date) AS due_date
            FROM campaign_activities where task_status=false and due_date is not null
            GROUP BY team_id
            ) t JOIN campaign_activities m ON m.team_id = t.team_id AND t.due_date = m.due_date
            left join campaign_activity_masters cm on cm.id = m.camp_activity_id  
            left join users u on u.id = m.assigned_to 
    ) b ON a.id = b.team_id  
order by a.id");

希望它對你有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM