通常情況下我們?cè)谧?strong>leftjoin連接時(shí)需要對(duì)不止一個(gè)條件進(jìn)行進(jìn)行匹配冰抢,這時(shí)候就需要使用閉包方式掀鹅,如下:
leftjoin('db', function ($join) {···});
leftjoin多條件查詢(xún)护奈,無(wú)非以下三種情況绊寻。
- 并且關(guān)系(&&)且為字段名稱(chēng)丙者,使用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');
})
- 或者關(guān)系(||),將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');
})
- 多條件查詢(xún)目锭,使用where,并使用use傳遞參數(shù)纷捞,代碼示例如下:
$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);
})
原文地址:http://www.fidding.me/article/40
happy coding !