我对Symfony真的很陌生,所以如果这听起来很愚蠢,我很抱歉,如果有人纠正我的理解,我会很感激。在Sumfony 2.5创建多个onetoMany关系
我正在阅读约Databases and Doctrine阅读时,我想为什么不创建一个虚拟的博客应用程序来练习。
伪博客应用我的工作很简单,只需三个表及其实体
- 后(其中博客文章去)其
Entity
是实体/ post.php中, - 评论(其中要发表评论,去)的
Entity
是实体/ comments.php了 - 类(其中职位类别去)其
Entity
是实体/ Category.php。
我能够得到的职位/类别/评论保存,显示,更新,删除所有工作正常。
我现在正在处理的是博客显示时,其类别显示为数字(类别ID),所以我试图链接邮政表与类别表显示类别名称而不是数字。
问题1,由于帖子也与评论表链接,我需要链接相同的帖子表与类别表,我们可以做到这一点在Entity/Post.php
?
class Post
{
/**
* @ORM\OneToMany(targetEntity="Comments", mappedBy="post")
*/
/**
* @ORM\ManyToOne(targetEntity="Category", inversedBy="post")
* @ORM\JoinColumn(name="category", referencedColumnName="id")
*/
protected $comment;
protected $categories;
如果不是,那么处理这些关系的正确方法是什么?
问题2,在阅读“Fetching Related Objects",看来我应该能够得到分类名称我做以下
$posts = $this->getDoctrine()->getRepository('BlogBundle:Post')->findBy(array('category' => $id), array('id' => 'DESC'));
$category_name = $posts->getCategory();
,但是这给了我一个错误
Error: Call to a member function getCategory() on a non-object in
我可以确认这个getCategory()
方法确实存在于Post
实体中
我会非常感谢这里的任何帮助。
感谢您确认注释是否正确,并纠正我需要置身于财产之上,我仍然觉得某些东西与注释不符,因为我有一种感觉,它没有加入两张桌子,我看着我的mysql和我没有看到任何外键集,我在设置注释后运行'php app/console doctrine:schema:update --force' – Baig 2014-10-10 11:38:26
@Baig我为'Category'和'Comment'添加了类,现在可能更清晰了? – SBH 2014-10-10 12:00:12
谢谢,这解决了问题1的问题,但我仍然不清楚问题2的问题是什么 – Baig 2014-10-10 12:47:29