簡體   English   中英

此MySQL查詢與Laravel查詢生成器等效嗎?

[英]What is the equivalent of this MySQL query to Laravel Query Builder?

這是我從MySQL查詢。 我想對兩個具有不同別名的相同表使用'LEFT JOIN',並在其括號內使用'AND'的'ON'。 並且此查詢到達時具有正確的結果,但是我的問題是如何知道該查詢與其Laravel查詢的等效項?

SELECT * FROM table1 AS a 
LEFT JOIN table1 AS b 
ON (a.column1 = b.column1 AND a.column2 < b.column2)
WHERE b.column2 is null;

然后,我在Laravel查詢生成器中使用此查詢,它將查詢錯誤的結果。

DB::table('table1 As a')
->leftJoin('table1 As b', 'a.column1', '=', 'b.column1')
->leftJoin('table2 As c','a.column2', '<', 'c.column2')
->whereNull('c.column2')
->get();

此Laravel查詢等效於此MySQL查詢,不幸的是,它將查詢相同的錯誤結果:

SELECT * FROM table1 AS a 
LEFT JOIN table1 AS b 
ON (a.column1 = b.column1 AND )
LEFT JOIN table1 AS c
ON (a.column2 < c.column2)
WHERE b.column2 is null;

您需要將一個函數傳遞給leftJoin()東西...

DB::table('table1 as a')
    ->leftJoin('table1 as b', function($join) {
        return $join->on('a.column1', '=', 'b.column1')
            ->whereColumn('a.column2', '<', 'b.column2');
    })->get();

暫無
暫無

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

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