我在将SQL查询转换为laravel查询时遇到问题。我想加入两个表users
和messages
,这样我就可以获得与其他用户进行对话的用户。
数据库结构:
消息:
这是我的SQL查询,我得到了我想要的东西:
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();