Я застрял с проблемой, когда я должен отсортировать / упорядочить коллекцию моделей по данным их отношений.
У меня настроено так:
Модели: User
, Team
, TeamUser
, Role
Модель TeamUser
сводная модель / таблица (содержащая user_id
и team_id
. Если стоит упомянуть, я также использую spatie / laravel -permissions для ролей.
Как бы я go вперед, когда я хочу отсортировать пользователей в команде по их role.name
? Я говорю об отношении users()
в модели Team
(см. Ниже пример кода). У некоторых пользователей есть роль team-leader
и у большинства есть роль team-seller
. Я пытался сделать обычный ..->sortBy('role.name')
, но, похоже, это не сработало. Заранее спасибо, если кто-нибудь может мне помочь.
User.php
/**
* Team relation
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
*/
public function team()
{
return $this->belongsToMany('App\Team', 'team_users', 'user_id', 'team_id');
}
Team.php
/**
* User relation
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
*/
public function users()
{
return $this->belongsToMany('App\User', 'team_users', 'team_id', 'user_id')->withTimestamps();
}