Salut à tous !
Je suis débutant sur Symfony 2 et je suis le cours de winzou (réalisation d'un blog en symfony 2).
Mais la je bloque :s
J'ai donc mes entités Article, Competence et ArticleCompetence entre les deux.
ArticleCompetence comporte un attribut : niveau.
Un article peut avoir plusieurs compétence et une compétence peut être attribuée à plusieurs articles.
Mes entités Article (inverse) et ArticleCompetence (propriétaire) ont une relation unidirectionnelle en OneToMany vers ArticleCompetence.
Jusque là, tout va bien.
J'ai donc mes entités créées, ainsi que mes repository et mon contrôleur qui gère tout ça comme il faut.
Maintenant, j'aimerais pouvoir faire un $article->getCompetence et donc passer cette relation en bidirectionnelle.
J'ai donc dans mon entité ArticleCompetence l'attribut $article avec l'annotation inversedBy="articleCompetences"
Et dans Article j'ai $articleCompetences avec l'annotation mappedBy="article"
Les getters et setters associés sont ok.
Voilà.
Maintenant j'aimerais ajouter la compétence avec l'id 2 à un article.
Dans mon controleur j'ai donc :
Mais évidemment quand je lance mon attachCompetence, j'ai une erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public function attachCompetenceAction(Article $article) { $em = $this->getDoctrine()->getManager(); $competence = $em->getRepository("SdzBlogBundle:ArticleCompetence")->find(2); $article->addArticleCompetence($competence); $em->flush(); return new Response('<html><body><h1>Compétence 2 attachée à l\'article '.$article->getId().'</h1></body></html>'); }
ArticleCompetence est composée d'une double clé : l'id de Article et l'id de Competence.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Binding an entity with a composite primary key to a query is not supported. You should split the parameter into the explicit fields and bind them separately.
Comment puis-je faire pour pouvoir ajouter simplement une compétence à un article dans le cadre d'une relation bidirectionnelle ?
J'ai l'impression de m'y être mal pris et d'avoir fait nawak.
Je précise que je suis novice
Merci aux âmes charitables !
Partager