Laravel 5 жаждет загрузить модель без прямой связи
У меня есть..
Модели :
Player
id,player_name
Sport
id,sports_name
Game
id,player_id,sports_id,scores
Модельные Отношения
Игрок хасмани игры, Спорт хасмани игры, игры принадлежать! игрок иСпорт .
Вопрос: в контроллере, Возможно ли загрузить Спорт и каждую игру на спорт в каждом игроке?
В одном запросе я хочу добиться в моем клинке чего-то подобного..
@foreach($player as $p)
@foreach ($p->sport as $ps) /*this wont work, since player has not relationship with sports*/
@foreach ($ps->game as $psg)
{{$psg->id}}
{{$psg->player_name}}
{{$psg->sports_name}}
{{$psg->scores}}
@endforeach
@endforeach
@endforeach
Есть ли другой способ достичь этого? Спасибо!2 ответа:
Вы можете использовать вложенную нетерпеливую загрузку : игрок имеет множество игр, игры относятся к спорту.
$player=Player::with('games','games.sport')->find($id); foreach($player->games as $game) { echo $game; echo $game->sport; }
Отношение между
Таким образом, вы можете определить отношениеPlayer
иSport
также являетсямного-ко-многим .sports
в моделиPlayer
следующим образом:public function sports() { return $this->belongsToMany('App\Sport', 'games')->withPivot('scores'); }
Тогда, на ваш взгляд, вы можете записать свой
foreach
как:@foreach($player as $p) @foreach ($p->sports as $s) {{$p->player_name}} {{$s->sports_name}} {{$s->pivot->scores}} @endforeach @endforeach