我想知道symfony / doctrine是否可以自动管理这样一个事实,即不是将我的实体的值设置为null,而是可以将其删除。 (通过删除它我的意思是值等于null的记录)
为例: 我有一个与VOTE实体相关联的PICTURE实体。每个人都可以(通过表格)投票赞成或反对图片(+1或-1)。实体VOTE属性值设置为+1或-1。但是选民也可以将他们的投票改为neigher赞成或反对......但在这种情况下,Symfony / doctrine不会删除实体,而是将VOTE value_attribut设置为null。 (虽然我希望将其删除)。
是否可以自动执行此操作。到目前为止,我必须在我的控制器中执行以下操作:
if($form->isValid())
{
if($vote->getValue() == null)
{
$picture = $vote->getPicture();
$picture->removeVote($vote);
$em->remove($vote);
}
}
答案 0 :(得分:0)
您可以使用教义实体监听器:
https://symfony.com/doc/current/bundles/DoctrineBundle/entity-listeners.html
http://doctrine-orm.readthedocs.org/en/latest/reference/events.html#entity-listeners
并且有类似的东西:
public function postUpdateHandler(Vote $vote, LifecycleEventArgs $event)
{
if (null === $vote->getValue()) {
// Following two lines could be avoided with a onDelete: "SET NULL" in Picture orm mapping
$picture = $vote->getPicture();
$picture->removeVote($vote);
$this->em->remove($vote);
$this->em->flush();
}
}
您可能需要注入容器以避免循环引用异常