我正在尝试更新模型事件订户内的属性,但是代码导致Shopware v5.4.6崩溃
我遵循了开发人员文档和论坛中的代码说明
class ModelSubscriber implements EventSubscriber
{
public function getSubscribedEvents()
{
return [
Events::preUpdate,
];
}
public function preUpdate(PreUpdateEventArgs $eventArgs)
{
$modelManager = $eventArgs->getEntityManager();
$order = $eventArgs->getEntity();
if ( ! ($order instanceof Order)) {
return;
}
if (
! $eventArgs->hasChangedField('paymentStatus') &&
! $eventArgs->hasChangedField('orderStatus')
) {
return;
}
$order->getAttribute()->setNsupdate(1);
$modelManager->persist($order);
$modelManager->flush();//crash here
}
}
属性“ nsupdate”已经创建,其类型为字符串。
我只收到错误“ 0-通信失败”
请问,我的代码有什么问题?
更新: 我尝试过
$modelManager->persist($order);
$modelManager->flush($order);
和
$orderAttribute = $order->getAttribute();
$orderAttribute->setNsupdate(1);
$modelManager->persist($orderAttribute);
$modelManager->flush($orderAttribute);//crash here
具有相同的崩溃结果。
答案 0 :(得分:1)
这取决于您使用的事件。
无需在更新前进行刷新。