通常情况下我们在做leftjoin连接时需要对不止一个条件进行进行匹配,这时候就需要使用闭包方式,如下:
leftjoin('db', function ($join) {···});
leftjoin多条件查询,无非以下三种情况。
- 并且关系(&&)且为字段名称,使用on,代码示例如下:
-
$roomUuid = 1;
-
$chatInfo = DB::table('chat_info')
-
->where('chat_info.room_uuid', $roomUuid)
-
->leftJoin('user_rooms', function ($join) {
-
$join->on('user_rooms.user_uuid', '=', 'chat_info.user_uuid')
-
->on('user_rooms.room_uuid', '=', 'chat_info.room_uuid');
-
})
- 或者关系(||),将on改为orOn,代码示例如下:
-
$roomUuid = 1;
-
$chatInfo = DB::table('chat_info')
-
->where('chat_info.room_uuid', $roomUuid)
-
->leftJoin('user_rooms', function ($join) {
-
$join->on('user_rooms.user_uuid', '=', 'chat_info.user_uuid')
-
->orOn('user_rooms.room_uuid', '=', 'chat_info.room_uuid');
-
})
- 多条件查询,使用where,并使用use传递参数,代码示例如下:
-
$roomUuid = 1;
-
$chatInfo = DB::table('chat_info')
-
->where('chat_info.room_uuid', $roomUuid)
-
->leftJoin('user_rooms', function ($join) use ($chatInfo) {
-
$join->on('user_rooms.user_uuid', '=', 'chat_info.user_uuid')
-
->where('user_rooms.room_uuid', '=', $chatInfo);
-
})
评论(0)