laravel API响应中的条目重复

t1qtbnec  于 2023-06-24  发布在  其他
关注(0)|答案(1)|浏览(129)

API响应中的条目是重复的,api应该在游戏中返回更多的用户积分。
评分资源:

  1. public function toArray($request)
  2. {
  3. $highestScores = Score::where('user_id', $this->user->id)
  4. ->select('game_id', 'version_id', DB::raw('MAX(score) as max_score'))
  5. ->groupBy('game_id', 'version_id', 'user_id')
  6. ->get();
  7. $gameIds = $highestScores->pluck('game_id');
  8. $games = Game::whereIn('id', $gameIds)->get();
  9. return $highestScores->map(function ($score) use ($games) {
  10. $game = $games->firstWhere('id', $score->game_id);
  11. return [
  12. 'game' => new UserGamesResource($game),
  13. 'score' => $score->max_score,
  14. 'timestamp' => Carbon::parse($score->created_at)->toIso8601String(),
  15. ];
  16. })->toArray();
  17. }

回复:

DB:

我尝试了很多事情,但我对一切都感到困惑。请帮帮我

zvms9eto

zvms9eto1#

试试这个:

  1. public function toArray($request)
  2. {
  3. $highestScores = Score::where('user_id', $this->user->id)
  4. ->select('game_id', 'version_id', DB::raw('MAX(score) as max_score'))
  5. ->groupBy('game_id', 'version_id', 'user_id')
  6. ->get();
  7. $gameIds = $highestScores->pluck('game_id');
  8. $games = Game::whereIn('id', $gameIds)->get();
  9. $userGames = $games->keyBy('id');
  10. return $highestScores->map(function ($score) use ($userGames) {
  11. $game = $userGames->get($score->game_id);
  12. return [
  13. 'game' => new UserGamesResource($game),
  14. 'score' => $score->max_score,
  15. 'timestamp' => Carbon::parse($score->created_at)->toIso8601String(),
  16. ];
  17. })->toArray();
  18. }
展开查看全部

相关问题