鉴于我有2个实体,发布和评论
我的关系是:
发布
oneToMany:
comments:
targetEntity: Comment
mappedBy: post
orphanRemoval: false
cascade: [ persist ]
fetch: EXTRA_LAZY
注释
manyToOne:
post:
targetEntity: Post
joinColumn:
name: post_id
referencedColumnName: id
onDelete: SET NULL
现在在我的控制器中,每当我想手动从帖子中删除评论时,Doctrine也会从数据库中删除我的评论。
public function testAction()
{
$postRepository = $this->getDoctrine()
->getManager()
->getRepository('MyBundle:Post');
$post = $postRepository ->find(1);
$commentRepository = $this->getDoctrine()
->getManager()
->getRepository('MyBundle:Comment');
$comment = $commentRepository ->find(1);
/* My comment is a child of the post */
$post->removeComment($comment);
}
/* Entity/Post */
public function removeComment(Comment $comment)
{
$this->comments->removeElement($comment);
}
通过这样做,我的评论将从数据库中删除,我不明白。
PS:我找到了一个避免学说删除我的实体的解决方案:
foreach($post->getComments() as $_comment) {
if ($commment === $_comment) {
$post->removeComment($comment);
}
}
在这种情况下,Doctrine没有删除我的评论,只是删除了我想要的关系。 有人可以解释一下吗?
由于