2017-06-09 148 views
0

任何一個可以幫助我獲得laravel連接查詢出來放像:Laravel 5+查詢生成器

LEFT JOIN table2 ON table2.field1 IN (table1.field1 , table1.field2) 

這意味着,我想加入table2用(價值的任何一個是,table1.field1table1.field2

回答

0
LEFT JOIN table2 ON table2.field1 = table1.field2 OR table2.field1 = table1.field1 

使用查詢生成器

$records = DB::table('table1') 
    ->leftJoin('table2', function ($join) { 
     $join->on('table2.field1', '=', 'table1.field1') 
      ->orOn('table2.field1' , '=', 'table1.field2'); 
    }) 
    ->get(); 

在這裏閱讀更多:Laravel Joins

+0

我想根據table1的兩列將table2與table1連接起來。任何一個列都有匹配的記錄,那麼它應該顯示。 – user1197250

+0

@ user1197250請檢查更新的答案 – linktoahref

+1

是的。這工作正常。謝謝...! – user1197250

0

LEFT JOIN table2 ON table2.field1 IN (table1.field1 , table1.field2)這是不正確的。正確的加入格式爲:

LEFT JOIN table2 ON table2.field1 ON table1.field1 = table1.field2 
+0

這是行不通的。我提到了一個大查詢的一部分,它工作正常。我想將它轉換成laravel查詢生成器格式 – user1197250

0

,您可以加入兩個列這樣。這有幫助!

$records = DB::table('table1 as t1') 
       ->leftJoin('table2 as t2', function ($join) { 
        $join->on('t2.field1', '=', 't1.field1'); 
        $join->orOn('t2.field1', '=', 't1.field2'); 
       })->get(); 

看到hereAdvanced Join Clauses

+0

如果我們在多個條件下使用兩個'on',那麼它會在這些條件下添加'和'。也就是說,輸出查詢將是,t2.field1 = t1.field1 AND t2.field1 = t1.field2。這不會滿足我的要求。 – user1197250