I need to lazy eager load some related models with custom order. Something like:
$season->load(['championships' => function ($query) {
$query->orderBy('country', 'desc');
}]);
But the problem is that championships do not have country property. In Championship model I use getCountryAttribute function:
public function getCountryAttribute()
{
return $this->masterChampionship->country;
}
public function masterChampionship()
{
return $this->belongsTo('App\MasterChampionship');
}
And I get next results:
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)
If i don't use load in controller and access championships from blade template
@foreach($season->championships->sortBy('country') as $championship)
....
@endforeach
everything works fine. But I want to cleanup template and move logic to controller. Is there any possibility to solve my case using built-in laravel features, without building custom BD query.