1. 程式人生 > 實用技巧 >php laravel左連線leftJoin多條where語句

php laravel左連線leftJoin多條where語句

通常情況下我們在做leftjoin連線時需要對不止一個條件進行進行匹配,這時候就需要使用閉包方式,如下:

leftjoin('db', function ($join) {···});
PHP

leftjoin多條件查詢,無非以下三種情況。

  1. 並且關係(&&)且為欄位名稱,使用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');
      })
    PHP
  2. 或者關係(||),將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');
      })
    PHP
  3. 多條件查詢,使用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);
      })
    PHP

happy coding !