Как получить связанные данные с вложенной Eager Загрузка - PullRequest
0 голосов
/ 27 апреля 2020

Я работаю с тремя моделями: Турнир, Игрок и Результат. Я пытаюсь получить результат каждого Турнира с игроками и их результат для этого турнира , однако, я получаю следующее: Турнир с игроками и их результат для всех Турниров . Турнир и Игрок имеют отношение многие ко многим.

Модель турнира

public function players()
{
    return $this->belongsToMany(Player::class)->withTimestamps();
}

Модель игрока

public function playerTournamentResult()
{
    return $this->hasMany(Result::class);
}

И я звоню

public function getActiveTournamentsWithResult(): Collection
{
    return Tournament::with('players.playerTournamentResult')->where('status', true)->get();
}

Вот таблица результатов

id | tournament_id | player_id

1 Ответ

0 голосов
/ 27 апреля 2020

Вы получаете все результаты из разных турниров, потому что отношение hasMany в Игроке Модель получает все результаты, которые объясняют ваш запрос.

Вы используете его следующим образом:

 public function getActiveTournamentsWithResult(): Collection
 {
    $tournament = Tournament::where('status',true)->get();

    Result::where('tournament_id',$tournament->id)->get();
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...