Bonjours à tous.
Je cherche un moyen pour une collection de relations d'agir comme si elle était une collection des entités reliées
je m'explique:
J'ai une entité Project, une entité User et une entité ProjectUser qui sert à associer des utilisateurs à un projet avec des informations supplémentaires (la Date d'ajout, et un commentaire)
Comme il y a des informations supplémentaires pour la liaison je ne peux pas créer automatiquement la liaison par un "many to many", je dois passer par une entité ProjectUser qui à un champs $project qui lie l'entité Project, un champ $user qui lie l'entité User, ainsi que les champs des infos complémentaires ($date et $comment)
Je cherche un moyen de faire un $project->getUsers() qui me renvoie directement la collection de User liés, (avec ou sans les infos supplémentaire)
Pour le moment je suis obligé de boucler sur les $project->getProjectUsers() (as $projectUser) pour, de là, faire un $projectUser->getUser().
Pour la raison et le contexte: j'ai déjà de nombreuses fonctions qui font des traitement sur des collections de User.
et je trouve que rajouter un
en entête de chacune de ses fonctions c'est dégueulasse :p
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 $sCollectionType = $aUsers->getTypeClass()->name; if ($sCollectionType === ProjectUser::class) { $aRealUsers = new ArrayCollection(); foreach ($aUsers as $oUser) { $aRealUsers->add($oUser->getUser()); } $aUsers = $aRealUsers; }
J'imagine bien créer une propriété virtuelle dans les entités qui va faire se travail, du genre getUserCollection().
Mais vu que ça me parait être une problématique plutôt courante sur les (appelons ça) les entités de liaison, je me dis qu'il doit y avoir un meilleur moyen ?
Surtout que dans mon cas réel ça risque de faire de très nombreuses propriétés virtuelles :/
J'avoue être incapable de résumé simplement la chose pour trouver une réponse sur google sur ce coup.
du coup,
Merci bien pour le coup de main !
Partager