Laravel упорядочивает отношение по методу на модели

Пытаюсь подумать о альтернативных способах получения того, что мне нужно от моего API.

Я использую Laravel Spark и задаю запрос следующим образом:

$team = Team::with('users')->find($id); 

Отношение пользователей к модели Team:

 public function users() { return $this->belongsToMany( 'App\User', 'team_users', 'team_id', 'user_id' )->withPivot('role')->orderBy('current_active_team', 'DESC'); } 

В настоящее время я заказываю это по полю в таблице users, но я также хочу заказать методом в модели Users:

 public function queueLength() { // returns an integer for the users queue length } 

Чтобы вернуть эти данные, я добавляю это по моему запросу:

 foreach ($team->users as $user) { $user->queueLength = $user->queueLength(); } 

Есть ли способ упорядочить пользователей $ team-> их queueLength?

Одним из решений будет использование коллекции sortBy .

Сначала сделайте queueLength как атрибут.

 public function getQueueLengthAttribute() { // returns an integer for the users queue length } 

Затем используйте коллекцию sortBy

 $team->users->sortBy('queueLength'); 

PS: это не будет хорошей идеей, если у вас есть огромный объем данных или использование разбивки на страницы.