Laravel加入Where(Case)和AND

时间:2017-06-05 02:26:00

标签: mysql laravel laravel-5.4

我在将SQL查询转换为laravel查询时遇到问题。我想加入两个表usersmessages,这样我就可以获得与其他用户进行对话的用户。

数据库结构:

用户: enter image description here

消息:

enter image description here

这是我的SQL查询,我得到了我想要的东西:

enter image description here

SELECT u.id, c.id, u.first_name, u.last_name FROM messages c, users u 
      WHERE (CASE WHEN c.user_one =  @USERID THEN c.user_two = u.ID WHEN c.user_two = @USERID THEN c.user_one= u.id END ) 
      AND ( c.user_one = @USERID OR c.user_two = @USERID ) Order by c.id DESC Limit 20

这是我的Laravel查询:

DB::table('messages')
   ->join('users', function($join) use ($user_id) {
        $join->select(DB::raw('CASE WHEN messages.user_one = ' . $user_id . ' THEN messages.user_two = ' . $user_id . 'WHEN messages.user_two = ' . $user_id . ' THEN messages.user_one = ' . $user_id));
        $join->on(function($query) use ($user_id)
        {
             $query->where('messages.user_one', '=', $user_id);
             $query->orWhere('messages.user_two', '=',$user_id);
        });       
   })
   ->select('users.*', 'messages.*')
   ->get();

0 个答案:

没有答案