symfony - Symfony 总是在我的自定义控制台命令中抛出 OptimisticLockException
问题描述
我在控制台命令中的代码
构造函数
private $em;
public function __construct(EntityManagerInterface $em, $name = null)
{
parent::__construct($name);
$this->em = $em;
}
...并且在我的执行命令中总是 OptimisticLockException
protected function execute(InputInterface $input, OutputInterface $output) {
$repository = $this->em->getRepository(ProductData::class);
$product = $repository->findOneBy(array('code' => $data[0]));
$product->setName($data[1]);
$product->setDesc($data[2]);
$product->setStockLevel((float)$data[3]);
$product->setPrice((float)$data[4]);
$this->em->flush(); }
我需要帮助
解决方案
问题是如果模型有 @ORM\HasLifecycleCallbacks () 并且当我更新模型时,函数
public function onPreUpdate()
{
$this->setTimestamp(new \DateTime('now'));
}
工作不正确。更新函数不仅在 id 上查找模型,还在时间戳上查找模型。为什么?我不知道:
UPDATE tblProductData SET strProductName = ?, stmTimestamp = CURRENT_TIMESTAMP WHERE intProductDataId = ? AND stmTimestamp = ? ["qqqq",8,"2018-05-10 15:44:21"]
因此出现了这样的错误,因为没有找到模型
推荐阅读
- python - 还有其他方法可以编写此代码吗?这似乎很难理解
- performance - 使用 clone_from_slice() 而不是 copy_from_slice() 的性能损失?
- angular - Angular Material mat-select 设置值后不刷新
- python - pymysql.err.OperationalError - 查询期间丢失与 MySQL 服务器的连接
- css - Chrome浏览器中的背景颜色奇怪但Edge中没有
- azure-logic-apps - 如何在 LogicApp 中为对象使用评估属性?
- java - java编译器是怎么看源码的?
- javascript - 将 HTML 添加到条形图的标签 - 图表 js
- visual-studio - XUnit - VS2019 - 具有 inlinedata 的理论在分组中不显示 DisplayName
- python - 给定直方图计算 PDF