php - 如何中止 PrePersist 函数的查询执行?
问题描述
我目前正在使用sonata admin和Doctrine ORM进行synfomy 4.2项目。
我想在某些条件设置为 true 时中止查询执行,例如,如果我想插入一个新产品,但由于某种原因该产品缺少参数 price,那么我想中止该查询并设置一条消息,让用户知道该产品无法创建,因为它缺乏价格。
我已经完成了研究,但找不到与我的问题相关的任何内容,我知道此功能必须应用于实体上的 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 是您正在寻找的
推荐阅读
- swift - 为什么单击取消按钮后我的 searchBar 没有重置为初始状态?
- react-native - 将 react-redux 连接到无状态组件。函数内部的属性没有更新
- android - Spinner 中未显示菜单
- javascript - 使用javascript单击按钮时打开新的浏览器窗口(不是选项卡,不是弹出窗口)
- sql - 多个窗口函数的累积和 V3
- javascript - Stripe SCA 迁移,我如何获得 PaymentIntent 'client_secret'?
- loops - 该任务包括一个带有未定义变量的选项
- python - 如何重置多索引?
- sql - SQL 对多个值重复 CTE
- angular - 无法确定软件包 highcharts-angular 的版本