Bonjour,

La question que je vais poser va vous sembler très basique, je le conçois, mais je débute avec Symfony et pour l'instant je tatonne un peu.
Pour l'instant grâce au tuto Grafikart sur la création d'entités pour un projet de blog, j'ai pu réussir à faire ce que je voulais.
En gros j'ai créé mes entités, et je les gère via le bundle easyadmin.
Donc tout va bien, j'ai toutes mes données que je peux créer à volonté, consulter dans easyadmin, tout ça.

J'ai réussi à créer des "virtual properties", en suivant la doc mais pour l'instant j'ai juste mis des valeurs "en dur".
Exemple j'ai un champ " qui est censé être vrai ou faux en fonction d'une certaine condition, là je l'ai mis à faux tout le temps histoire de confirmer que ce que j'ai fait est ok.

Maintenant j'aimerais que la valeur soit réelle c'est à dire que je dois aller chercher l'info, et c'est là où j'ai besoin d'aide.
En effet, je suis sur une liste d'entités qui sont des mugs.
Pour chaque mug je peux avoir des contrats qui sont associés, de différents types.
Et là j'ai une colonne "location active" qui va me permettre de savoir, pour chaque mug de ma liste, si le mug en question possède un contrat de location actif.
Donc en gros, je dois faire un "findoneby" sur les contrats et trouver un contrat qui soit associé à mon mug, qui soit du type location et qui soit actif.
Le souci c'est que je ne sais pas coment accéder au repository des contrats lorsque je suis dans l'entité des mugs.

J'ai tenté de faire d'abord :
$em = $this->getDoctrine()->getManager(); mais cela ne fonctionne pas.

Quelqu'un pourrait-il m'aider svp ?
Je vous remercie d'avance.

2 réponses


essaye de récupérer le répository par l'autowiring
Tu lui passe une instance de ton répository dans le constructeur:
par exemple public function __construct(ContractRepository $repository)

Mais par contre je pense que ta solution c'est directement d'écrire dans le répository des contracts et retourner uniquement les éléménts qui correspondent a ton cas

Bonsaiko
Auteur

Merci de ta réponse.
En fait, ce que j'ai fait c'est que j'ai utilisé les fonctions à ma dispo, j'ai pensé que ce serait plus propre.
Alors j'ai fait un $this->getContrats(); qui me récupèrent tous les contrats associés au mug.
Et je parcours ensuite ce tableau en faisant les tests, via les méthodes de l'entité, comme par exemple :
$contrat->getType() pour vérifier si c'est "location" ou $contrat->getActif() pour vérifier s'il est actif.
A partir du moment où j'ai les 2, ça veut dire que j'ai trouvé ce que je cherchais et ma fonction fait un return true.

Ca m'embêtait car je pensais que ça prenait plus de temps que mon idée initiale (dans le sens où plus on a de contrats associés et plus la boucle doit tourner longtemps pour trouver le bon, plus c'est long, sans compter les cas où il y a beaucoup de contrats mais aucun n'est location ni actif...).
Mais au final c'est la solution la plus simple que j'ai trouvée, à mon petit niveau.