我的数据库架构;
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")
有可能吗?
答案 0 :(得分:0)
即使有可能,你也会做错。最好在Like表中使用article_id
和page_id
,而不是item_id
和itemtype
标识符。
实施例:
如果按照我上面的说法进行操作,您将能够在数据库级别@ORM\JoinColumn(...., onDelete="CASCADE")
上设置级联删除。这意味着如果文章已被删除,所有喜欢的内容也将通过外键自动删除。
如果按照自己的方式进行,那么您必须手动处理。最好把它留给数据库;代码越少,出错的可能性就越小。