2016-12-14 5 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); 

更新日:

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応答から補正後のバージョンは次のとおりです。

あなたは完全なクエリの下に試してみてくださいAdvanced Join Clauses

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


    }) 
+0

こんにちは、ありがとうございました!私は私のletfjoinに2つの条件があります..どのように私は両方の条件を書くことができますか? – Na30m

+0

実際には、コードが更新された後にwhereステートメントに置くことができます。 – SteD

+0

条件は左結合でなければなりません。私はそれを配置するときに正しい結果を表示しません。 – Na30m

1

を見てすることができます。あなたのためにこの作品が欲しい!

関連する問題