Doctrine2与Where Condition的实体关系

时间:2013-12-26 09:54:20

标签: mysql symfony doctrine-orm entity-relationship

我的数据库架构;

LIKE      PAGE    ARTICLE    
id        id      id
userid    name    text
itemid
itemtype

和我的实体;

page.php文件;

/**
 * @ORM\OneToMany(targetEntity="Like", mappedBy="page")
 */
 protected $likes;

Article.php;

/**
 * @ORM\OneToMany(targetEntity="Like", mappedBy="article")
 */
 protected $likes;

Like.php;

/**
 * @ORM\ManyToOne(targetEntity="Page", inversedBy="likes")
 * @ORM\JoinColumn(name="itemid", referencedColumnName="id")
 */
 protected $page;

/**
 * @ORM\ManyToOne(targetEntity="Article", inversedBy="likes")
 * @ORM\JoinColumn(name="itemid", referencedColumnName="id")
 */
 protected $article;

我的问题;如何添加WHERE条件?

喜欢这个;

@ORM\JoinColumn(name="itemid", referencedColumnName="id", condition="itemtype=1")

有可能吗?

1 个答案:

答案 0 :(得分:0)

即使有可能,你也会做错。最好在Like表中使用article_idpage_id,而不是item_iditemtype标识符。

实施例: 如果按照我上面的说法进行操作,您将能够在数据库级别@ORM\JoinColumn(...., onDelete="CASCADE")上设置级联删除。这意味着如果文章已被删除,所有喜欢的内容也将通过外键自动删除。

如果按照自己的方式进行,那么您必须手动处理。最好把它留给数据库;代码越少,出错的可能性就越小。