脚本宝典收集整理的这篇文章主要介绍了php – Symfony2从具有ManyToMany关系的倒置实体获取对象,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我做了一个像这样的ManyToMany关系:
class Article { /** * @ORM\ManyToMany(targetEntITy="Alpha\blogBundle\Entity\Category",casCADe={"PErsist"},inversedBy="Article") * @ORM\JoinTable(name="article_category") */ PRivate $categories;
和
public function __construct(){ $this->categories = new \Doctrine\Common\Collections\ArrayCollection();
和类别实体:
class Category { /** * @ORM\ManyToMany(targetEntity="Alpha\BLOGBundle\Entity\Article",mappedBy="Category") */ private $articles;
和
public function __construct(){ $this->articles = new \Doctrine\Common\Collections\ArrayCollection();
public function addCategory(\Alpha\BlogBundle\Entity\Category $categories) { $this->categories[] = $categories; $categories->addArticle($this); return $this; }
(第四行,$categories-> addArticle($this);)
在我的控制器中:
public function ajouterAction($data = null,$id = null) { // On récupère l'EM pour enregistrer en BDD $em = $this->getDoctrine()->getManager(); // On définit une nouvel objet Article avec de nouveaux attributs $article = new Article; $article->setTitle('1er article !'); $article->setContent('Cupcake ipsum dolor sit amet ice cream tiramisu unerdwear.COM. Caramels halvah LOLlIPOp apple pie soufflé. Tart lollipop soufflé candy tootsie roll sweet donut. Lemon drops danish I love icing I love. Candy canes cheesecake I love. I love tiramisu applicake. I love gingerbread soufflé sweet roll muffin. Cupcake liquorice gummi bears muffin chocolate jelly-o.'); $article->setAuthor('Toto'); // On définit une nouvel objet Category avec de nouveaux attributs $category = new Category; $category->setName('Poney'); $article->addCategory($category); $em->persist($category); $em->persist($article); $em->flush(); return $this->render('AlphaBlogBundle:Blog:ajouter.htML.twig'); }
public function categoryAction($cat = null) { $em = $this->getDoctrine()->getManager(); // Si cat est vide,on renvoit la liste complète des catégories if (!isset($cat) || empty($cat) || $cat == null) { $categories = $em->getRepository('AlphaBlogBundle:Category')->findAll(); return $this->render('AlphaBlogBundle:Blog:categories.html.twig',array( 'categories' => $categories )); } // Sinon on renvoit la liste des articles de la catégorie else { $category = $em->getRepository('AlphaBlogBundle:Category')->findOneBy(array('name' => $cat)); $articles = $category->getArticles(); return $this->render('AlphaBlogBundle:Blog:category.html.twig',array( 'articles' => $articles,'category' => $category //'name' => $name )); } }
在我看来,我可以看到我的类别的名称,但文章没有显示,我有这个错误消息:
ContextErrorException:注意:未定义的索引:/home/franck/www/alpha/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.PHP第1036行中的类别
如果有人可以提供帮助,我在这里有点迷失.
因此,尝试将inversedBy =“Article”更改为Article类中的inversedBy =“articles”,并将CategoryBy =“Category”更改为Category类中的mappedBy =“categories”.
另请参见this多对多双向示例.
希望这可以帮助.
以上是脚本宝典为你收集整理的php – Symfony2从具有ManyToMany关系的倒置实体获取对象全部内容,希望文章能够帮你解决php – Symfony2从具有ManyToMany关系的倒置实体获取对象所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。