Dans une application sportive, je souhaite afficher une liste d'équipes et des joueurs dans chaque équipe et que les joueurs ont été regroupés par leur position.
Voici comment les relations de modèle sont définies. P>
Chaque position est liée à un sport. Dans le football, vous auriez cf, st, gk, etc. dans le basketball que vous auriez pg, pf, c, etc. P> la classe de position connaît chaque joueur qui joue la position. p> Chaque joueur peut lire une position spécifique sur une seule équipe. P> Team::with(['players.position' => function ($query) { /* insert groupBy magic */ }])->paginate();
3 Réponses :
Vous devez obtenir vos équipes puis charger d'autres données:
$teams->load('sport.positions.players')->paginate(5);
Merci pour la réponse. J'ai essayé ceci: $ this-> équipes = \ app \ équipe :: tous (); code> $ ceci-> équipes => équipes-> Charge ('Sport.Positions. Les joueurs »); code> mais cela finit par charger (dans chaque objet d'équipe) tous les joueurs de chaque position, sans respecter le Team_id. Fondamentalement, je finis avec des joueurs pour diverses équipes dans le même tableau pour chaque équipe.
Vous pouvez essayer ci-dessous Query:
$team = Team::with(['players','position'=>function($q){
$q->groupBy('positio_name') ;
})->get();
pas exactement strong> em> ce que vous voulez, mais cela devrait vous donner quelque chose de plus proche. Commencez par définir un équipes code> sur le APP \ SPORT CODE> P> Sport::with(['teams.players.position'])->find($sport_id)
->setRelation('teams', $sport->teams->map(function($team){
return $team->setRelation('players', $team->players->groupBy(function($player){
return $player->position->name;
}));
}));
Essayer de définir la relation sport.Teams pour voir si cela fonctionne
Il n'y a pas de relation directe entre
équipe code> etposition code>. Sans relation, il est difficile de former le Json que vous vouliez. Vous êtes d'accord avec le JSONTeams-> Sports-> Positions-> Joueurs Code>?@Sandeeffsudhakaran Oui, c'est totalement fin avec moi, mais quand j'essaie quelque chose à cet effet, je finis à obtenir des joueurs par position de toutes les équipes du même tableau. Pour une raison quelconque, les joueurs ne sont pas une portée à l'équipe lorsque je les obtiens à cette approche.