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

Ken*_*thC 3 php mysql laravel laravel-5

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

id, sender_id, message, receiver_id, created_at, updated_at
Run Code Online (Sandbox Code Playgroud)

而另一个表称为用户,它的列是

id, firstname, lastname, email, password, created_at,updated_at
Run Code Online (Sandbox Code Playgroud)

我想获取所有用户的所有消息,因此我使用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
Run Code Online (Sandbox Code Playgroud)

这是我试过的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);
Run Code Online (Sandbox Code Playgroud)

aad*_*hsg 16

试试这个.

            ->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');
            })
Run Code Online (Sandbox Code Playgroud)