Ссылка на родительский столбец во вложенных отношенияхPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Ссылка на родительский столбец во вложенных отношениях

Сообщение Anonymous »

Проблема
Я провел последние несколько часов в поисках решения этой проблемы и не нашел ничего подходящего. Я пытаюсь загрузить все маршруты, которым назначен хотя бы один самолет, который в настоящее время находится в аэропорту вылета маршрута, например:

Код: Выделить всё

Route::has('availableAircraft');
Отношение доступного самолета на маршруте в настоящее время выглядит следующим образом: проблема связана с невозможностью найти способ внедрить маршрут в последнее предложениеwhere (см. ROUTE_ID_HERE).

Код: Выделить всё

// Route.php

/**
* This returns all assigned aircraft that are not allocated to jobs and are at the departure airport of the route
*/

public function availableAircraft()
{

return $this->belongsToMany(
Aircraft::class, 'aircraft_route_assignments', 'route_id', 'aircraft_id')
->whereNull('current_job_id')
->where('current_airport_id', 'ROUTE_ID_HERE');
}
Необработанный SQL
Я могу выполнить этот запрос с использованием необработанного SQL, но не могу найти способ воспроизвести это в Eloquent:

Код: Выделить всё

select
count(*) as aggregate
from
`routes`
where (
select
count(*)
from
`aircraft`
inner join `aircraft_route_assignments` on `aircraft`.`id` = `aircraft_route_assignments`.`aircraft_id`
where
`routes`.`id` = `aircraft_route_assignments`.`route_id`
and `current_job_id` is null
and `current_airport_id` = `routes`.`departure_airport_id`
) > 0
and `routes`.`deleted_at` is null
Важнейшей частью здесь является финальная часть и 'current_airport_id' = 'routes'.'departure_airport_id', которую я не могу найти способ воспроизвести в запросе builder.
Что я пробовал
Я пытался вручную указать поле, как в SQL-запросе, но фактический SQL, сгенерированный этим, использует '

Код: Выделить всё

routes.departure_airport_id
' как литеральная строка и поэтому не возвращает результатов:

Код: Выделить всё

// Route.php

/**
* This returns all assigned aircraft that are not allocated to jobs and are at the departure airport of the route
*/

public function availableAircraft()
{

return $this->belongsToMany(
Aircraft::class, 'aircraft_route_assignments', 'route_id', 'aircraft_id')
->whereNull('current_job_id')
->where('current_airport_id', '`routes`.`departure_airport_id`');
}
Не слишком ли я задумываюсь об этом?


Подробнее здесь: https://stackoverflow.com/questions/679 ... lationship
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»