2016-12-14 70 views
0

我想將這個查詢用於我的laravel應用程序,但我不知道如何編寫IF部分!在Laravel5雄辯的SQL查詢中實現IF語句

SELECT  
`users`.* ,  
IF(`friends`.`user_id` = '2' , TRUE , FALSE) AS `user_friend`   
FROM `users`  
LEFT JOIN `friends` ON `friends`.`friend_id` = `users`.`id` AND `friends`.`user_id` = '2'  
WHERE `users`.`id` != '2' 

回答

2

您可以使用DB::raw

User::select(DB::raw('users.* , IF(friends.user_id = '2' , TRUE , FALSE) AS user_friend')) 
->join('friends', 'friends.friend_id', '=', 'user.user_id') 
->where('friends.user_id, 2) 
->where('user.id', '!=', 2); 

更新時間:

你可以看看Advanced Join Clauses

->join('friends', function ($join) { 
     $join->on('friends', 'friends.friend_id', '=', 'user.user_id') 
      ->where('friends.user_id', 2); 


    }) 
+0

嗨,謝謝你的回覆!我在letfjoin有兩個條件..我怎麼能寫我的兩個條件? – Na30m

+0

實際上,你可以將它放在連接後的where語句中,代碼更新。 – SteD

+0

條件應該在leftjoin,它不顯示正確的結果,當我把它放在 – Na30m

1

嘗試下面完整的查詢:

User::select(DB::raw("users.* , IF(friends.user_id = '2' , TRUE , FALSE) AS user_friend")) 
->join('friends', function ($join) { 
    $join->on('friends', 'friends.friend_id', '=', 'user.user_id') 
    ->where('friends.user_id', 2); 
}); 

這是@SteD答案修正後的版本。希望爲你工作!