我正在研究学说2。
问题: 我将更新实体订单,同时我还需要更新网站实体。所以我为订单创建了一个EventListener,并实现了一个方法preUpdate()来更新网站。
我的代码:
public function preUpdate($eventArgs) {
$order = $eventArgs->getEntity();
if ($eventArgs->hasChangedField('contactId')) {
$em = $eventArgs->getEntityManager();
$uow = $em->getUnitOfWork();
$website = $order->getWebsite();
$website->setContactId($order->getContactId());
$uow->recomputeSingleEntityChangeSet(
$em->getClassMetadata(get_class($website)), $website);
}
}
但它会通过以下错误:Class \ Website不是有效的实体或映射的超类。
请建议如何解决此问题。提前谢谢。
答案 0 :(得分:1)
更新网站实体后,我们需要将此实体添加到计算更改集中。
public function preUpdate($eventArgs) {
$order = $eventArgs->getEntity();
if ($eventArgs->hasChangedField('contactId')) {
$em = $eventArgs->getEntityManager();
$uow = $em->getUnitOfWork();
$website = $order->getWebsite();
$website->setContactId($order->getContactId());
$uow->computeChangeSet(
$em->getClassMetadata(get_class($website)), $website);
}
}