在Laravel5中的SQL查询中实现IF语句eloquent

时间:2016-12-14 02:38:32

标签: php sql laravel laravel-5

我想将此查询用于我的laravel应用程序,但我不知道如何编写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 个答案:

答案 0 :(得分:3)

您可以使用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);


    })

答案 1 :(得分: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回答修正后的版本。希望这对你有用!