我的数据库架构;
LIKE PAGE ARTICLE
id id id
userid name text
itemid
itemtype
和我的实体;
页面.php;
/**
* @ORM\OneToMany(targetEntity="Like", mappedBy="page")
*/
protected $likes;
文章.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")
可能吗?
最佳答案
即使有可能,你也会做错。 Like 表中最好有 article_id
和 page_id
,而不是您的 item_id
和 itemtype
标识符。
示例:
如果您按照我上面所说的操作,您将能够在数据库级别设置级联删除@ORM\JoinColumn(...., onDelete="CASCADE")
。这意味着如果文章被删除,所有喜欢的内容也将通过外键自动删除。
如果您按照自己的方式进行操作,那么您将必须手动处理。最好把它留给数据库;代码越少,出错的可能性就越小。
关于mysql - Doctrine2 实体与Where条件的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20782702/