使用doctrine2

时间:2015-07-31 10:22:38

标签: php doctrine

我正在研究学说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不是有效的实体或映射的超类。

请建议如何解决此问题。提前谢谢。

1 个答案:

答案 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);
    }
}