php – Symfony2从具有ManyToMany关系的倒置实体获取对象
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – Symfony2从具有ManyToMany关系的倒置实体获取对象,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3453字,纯文字阅读大概需要5分钟。
内容图文
![php – Symfony2从具有ManyToMany关系的倒置实体获取对象](/upload/InfoBanner/zyjiaocheng/804/963c0eb321dc4899950c65602e1e7313.jpg)
我正面临着我的学说实体关系的问题.
这是事情:
我有2个实体:文章和类别
文章是主人,类别是奴隶
我想从文章中获取分类,而从类别中获取文章.
我做了一个像这样的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", cascade={"persist"}, 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行中的类别
如果有人可以提供帮助,我在这里有点迷失.
解决方法:
mappedBy: This option specifies the property name on the targetEntity
that is the owning side of this relation. Its a required attribute for
the inverse side of a relationship.inversedBy: The inversedBy attribute designates the ?eld in the entity
that is the inverse side of the relationship.
因此,尝试将inversedBy =“Article”更改为Article类中的inversedBy =“articles”,并将CategoryBy =“Category”更改为Category类中的mappedBy =“categories”.
另请参见this多对多双向示例.
希望这可以帮助.
内容总结
以上是互联网集市为您收集整理的php – Symfony2从具有ManyToMany关系的倒置实体获取对象全部内容,希望文章能够帮你解决php – Symfony2从具有ManyToMany关系的倒置实体获取对象所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。