如何在PrePersist函数上中止查询执行?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (6)

我目前正在使用sonata adminDoctrine ORM开展一个synfomy 4.2项目。

我想在某些条件设置为true时中止查询执行,例如,如果我想插入一个新产品,但是由于某些原因产品的参数价格,我想中止该查询并设置一条flash消息,让用户知道无法创建产品,因为它价格昂贵。

我完成了我的研究但是我找不到任何与我的问题有关的内容,我知道这个功能必须应用于实体上的PrePersist函数。

/**
* @ORM\PrePersist
*/
public function prePersist(LifecycleEventArgs $args)
{
    $em = $args->getEntityManager("App\Milenio\VersionsControlBundle\Entity\Plugins");
    $em->getConnection();
    $em->flush();
    $em->clear();
}

但当然这没有任何作用,我仍然会造成明显的SQL异常。

提问于
用户回答回答于

强迫用户填写价格,或者只是让价格不可空,并且在控制器中捕获错误,然后向用户发送消息,这些东西是更清晰的解决方案并且不需要监听器。此外,我不认为你可以冲洗一个prepersist,也许entitymanager-> rollback,或entitymanager detach是你正在寻找的

扫码关注云+社区

领取腾讯云代金券