Laravel - 使用OR运算符连接2个表

时间:2016-03-18 02:03:13

标签: php mysql laravel laravel-5

我有一个名为消息的表,它的列是

id, sender_id, message, receiver_id, created_at, updated_at

另一个表名为用户,其列为

id, firstname, lastname, email, password, created_at,updated_at

我想获取所有用户的所有消息,因此我将使用users.id加入 messages.sender_id和messages.receiver_id

但是我不知道如何在加入laravel时使用“OR”运算符 这是我的原始查询,它为我提供了所需的输出。

SELECT messages.*,users.* FROM messages JOIN users ON users.id = messages.sender_id 
OR users.id = messages.receiver_id GROUP BY messages.id

这是我试过的laravel查询

$get_messages = DB::table('messages')
            ->where('messages.sender_id',$user_id)
            ->leftjoin('users', function($join){
                $join->on('users.id','=','messages.sender_id'); // i want to join the users table with either of these columns
                $join->on('users.id','=','messages.receiver_id');
            })
            ->orwhere('messages.sender_id',$partner_id)
            ->where('messages.receiver_id',$user_id)
            ->orwhere('messages.receiver_id',$partner_id)
            ->groupby('messages.id')
            ->get();

print_r($get_messages);

2 个答案:

答案 0 :(得分:12)

试试这个。

            ->leftjoin('users', function($join){
                $join->on('users.id','=','messages.sender_id'); // i want to join the users table with either of these columns
                $join->orOn('users.id','=','messages.receiver_id');
            })

答案 1 :(得分:0)

你也可以使用直接查询

$results = DB::select( DB::raw("SELECT messages.*,users.* FROM messages JOIN users ON users.id = messages.sender_id 
OR users.id = messages.receiver_id GROUP BY messages.id") );