Мне нужна ленивая нетерпеливая загрузка некоторых связанных моделей по индивидуальному заказу. Что-то вроде:laravel Lazy Eager Загрузка с помощью заказа Связанная модель
$season->load(['championships' => function ($query) {
$query->orderBy('country', 'desc');
}]);
Но проблема в том, что в чемпионатах нет собственности страны. В модели чемпионата я использую функцию getCountryAttribute:
public function getCountryAttribute()
{
return $this->masterChampionship->country;
}
public function masterChampionship()
{
return $this->belongsTo('App\MasterChampionship');
}
И я получаю следующие результаты:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'country' in 'order clause' (SQL: select * from `championships` where `championships`.`season_id` in (41) order by `country` desc)
Если я не использую нагрузки в чемпионатах контроллера и доступа из шаблона лезвия
@foreach($season->championships->sortBy('country') as $championship)
....
@endforeach
все работает нормально. Но я хочу очистить шаблон и переместить логику в контроллер. Есть ли возможность решить мое дело с помощью встроенных функций laravel, не создавая пользовательский BD-запрос.
все работает. Некоторые ошибки с названиями таблиц и колонок champions.master_championships_id -> champions.master_championship_id master_championships.country -> master_championships.country_id –