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

Мне нужно получить имена из таблицы адресатов для каждого из from_destination_id и to_destination_id как fromDestinationName и toDestinationName

$bookingTransfersData = DB::table('transfers as t')
            ->select('t.periodStart as periodStart', 't.periodEnd as periodEnd','t.days','t.transfer_id','t.cost_round_trip',
                't.cost_one_way','t.status','d.destination_id as destinationId','d.name as destinationName', 't.type',
                'tf.name as officeName', 'ag.name as agencyName', 'u.name as userName', 'v.name as vehicleName')
            ->join('destinations as d', function ($join){
                $join->on('t.from_destination_id','=','d.destination_id')
                    ->orOn('t.to_destination_id','=','d.destination_id');
            })->join('vehicles as v','t.vehicle_id','=','v.vehicle_id')
            ->join('transfer_offices as tf','t.office_id','=','tf.transfer_office_id')
            ->join('agencies as ag','t.forAgency_id','=','ag.agency_id')
            ->join('users as u','t.addedBy_user_id','=','u.id')
            ->get();

я хочу получить имена каждого идентификатора после этих результатов

$searchResults = $bookingTransfersData
            ->where('periodStart','between', $periodStart && $periodEnd)
            ->where('periodEnd','between', $periodStart && $periodEnd)
            ->where('destinationName','=',$from_destination_name && $to_destination_name)->where('type','like', $type);

как:

$fromDestinationName = $searchResults->pluck('from_destination_id','destinationName')
            ->where('from_destination_id','=','destinationId');

но $fromDestinationName вернуть пустую коллекцию

пожалуйста, помогите:)

1 Ответ

2 голосов
/ 24 января 2020

Я решил это, удалив это объединение:

->join('destinations as d', function ($join){
                $join->on('t.from_destination_id','=','d.destination_id')
                    ->orOn('t.to_destination_id','=','d.destination_id');
            })

и добавляю для каждого destionation_id объединение для извлечения каждого имени, и это не будет работать, если я не добавлю имя таблицы, к которой присоединился два раза как , чтобы назвать его новым именем как 'destinations as d1' и 'destinations as d2'

$bookingTransfersData = DB::table('transfers as t')
            ->select('t.periodStart as periodStart', 't.periodEnd as periodEnd','t.days','t.transfer_id','t.cost_round_trip',
                't.cost_one_way','t.status','d1.destination_id as fromDestinationId','d1.name as fromDestinationName', 't.type',
                't.to_destination_id','tf.name as officeName', 'ag.name as agencyName', 'u.name as userName', 'v.name as vehicleName',
                't.from_destination_id', 'd2.destination_id as toDestinationId','d2.name as toDestinationName')
            ->join('destinations as d1','t.from_destination_id','=','d1.destination_id')
            ->join('destinations as d2','t.to_destination_id','=','d2.destination_id')
            ->join('vehicles as v','t.vehicle_id','=','v.vehicle_id')
            ->join('transfer_offices as tf','t.office_id','=','tf.transfer_office_id')
            ->join('agencies as ag','t.forAgency_id','=','ag.agency_id')
            ->join('users as u','t.addedBy_user_id','=','u.id')->get();

проблема решена:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...