Я пытаюсь отсортировать записи по highscoredesc, чтобы получить пользователей с самым высоким рейтингом. Я много пробовал и все еще пытаюсь, но не смог выполнить задачу.
Следующее работает, но оно сортирует
$GameLog = User::with(['games' => function ($q){
$q->withPivot('highscore','level');
}])->get();
Я также пытался добиться этого, но это тоже не работает
$GameLog = User::with(['games' => function ($q){
$q->withPivot('highscore','level');
}])->groupBy(DB::raw('highscore DESC'))
->get();
Я также пробовал функцию sortBy() в цикле, но все же столкнулся с проблемой. Первый запрос возвращает следующий результат, который должен быть отсортирован highscore.
{
"status": "success",
"data": [
{
"id": 1,
"name": "fasdfsad",
"games": [
{
"id": 1,
"pivot": {
"highscore": 506,
}
}
]
},
{
"id": 8,
"name": "john",
"favorite_game_id": null,
"games": [
{
"id": 1,
"pivot": {
"highscore": 2340,
}
}
]
},
{
"id": 10,
"name": "tfyuyu",
"games": [
{
"id": 1,
"pivot": {
"highscore": 100,
}
}
]
}
]
}
Может кто-нибудь любезно дать мне любую идею, как я могу это исправить, я был бы признателен. Большое спасибо
Отредактировано для моделей
В Game.php
public function users()
{
return $this->belongsToMany(User::class, 'user_and_game', 'game_id', 'user_id')
->withPivot('highscore');
}
В User.php
public function games()
{
return $this->belongsToMany(Game::class, 'user_and_game', 'user_id', 'game_id');
}
Я хотел бы оценить, если кто-то любезно поможет мне в этом






Вам нужно создать новую модель для пивота (highscore). Например:
<?php
namespace App;
use Illuminate\Database\Eloquent\Relations\Pivot;
class Highscore extends Pivot
{
public function user()
{
return $this->belongsTo(User::class);
}
public function game()
{
return $this->belongsTo(Game::class);
}
}
Примечание: из примера мы расширяемся от класса Pivot вместо Model.
В контроллере вы можете отсортировать его, как в этом примере:
$highscores = Highscore::orderByDesc('score')
->with('user', 'game')
->get();
При использовании пользовательской сводной таблицы вам необходимо определить ее из таблицы User и Games.
public function users()
{
return $this->belongsToMany(User::class, 'user_and_game', 'game_id', 'user_id')
->using(Highscore::class)
->withPivot('highscore');
}
Может ли кто-нибудь помочь мне в этом