получить пустой столбец после объединения таблиц на этом кулоне laravel - PullRequest
1 голос
/ 27 января 2020

Существует два типа пункта назначения, один из которых ПОЛЕТ , а другой - РЕГИОН , и если тип пункта назначения РЕГИОН тогда flight_id будет null

DB::table('destinations as d')
            ->join('flights as f','d.flight_id','=','f.flight_id')
            ->where('f.status','=','ACTIVE')
            ->whereNull(['d.deleted_at', 'f.deleted_at'])->paginate(20);

Мне также нужно получить destinations , где destinations.flight_id = null,

с этим соединением я могу потому что это соединение flight_id.

Ответы [ 2 ]

1 голос
/ 27 января 2020

Я уловил проблему

DB::table('destinations as d')
            ->select('d.*','f.flight_id as flightId','f.flight_number','f.departure','f.arrival','f.air_line','f.air_port','f.stops')
            ->leftJoin('flights as f','d.flight_id','=','f.flight_id')
            ->whereNull(['d.deleted_at', 'f.deleted_at'])
            ->paginate(20);

Я должен различаться между destination.flight_id и flight.flight_id, потому что они имеют одинаковое имя, добавляя select()

, но не это Точная проблема, проблема с соединением должно быть левое соединение , и вот некоторые данные, которые я получаю в качестве примера:

}
      3 => {#500 ▼
        +"destination_id": 33
        +"name": "USA"
        +"flight_id": 3
        +"type": "FLIGHT"
        +"status": "ACTIVE"
        +"created_at": "2020-01-27 14:41:17"
        +"updated_at": "2020-01-27 14:41:17"
        +"deleted_at": null
        +"flightId": 3
        +"flight_number": "#A205"
        +"departure": "2020-01-27 01:00:00"
        +"arrival": "2020-01-31 01:00:00"
        +"air_line": "sss"
        +"air_port": "zzz"
        +"stops": 2
      }
      4 => {#1011 ▼
        +"destination_id": 34
        +"name": "BEA"
        +"flight_id": null
        +"type": "REGION"
        +"status": "ACTIVE"
        +"created_at": "2020-01-27 14:42:57"
        +"updated_at": "2020-01-27 14:42:57"
        +"deleted_at": null
        +"flightId": null
        +"flight_number": null
        +"departure": null
        +"arrival": null
        +"air_line": null
        +"air_port": null
        +"stops": null
      }
0 голосов
/ 27 января 2020

Просто добавьте еще одно условие к вашему запросу.

 DB::table('destinations as d')
            ->join('flights as f','d.flight_id','=','f.flight_id')
            ->where('f.status','=','ACTIVE')
            ->where('d.flight_id','=','NULL') // added
            ->whereNull(['d.deleted_at', 'f.deleted_at'])
            ->paginate(20);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...