首页 > 解决方案 > Symfony 4 Doctrine LifecycleEventArgs getEntity() 与 getObject()

问题描述

LifecycleEventArgs::getObject()和 和有什么不一样LifecycleEventArgs::getEntity()

namespace App\EventListener;

use Doctrine\Common\EventSubscriber;
use Doctrine\ORM\Event\LifecycleEventArgs;
use Doctrine\ORM\Events;

/**
 * Class MyListener
 *
 * @package App\EventListener
 */
class MyListener implements EventSubscriber
{
    /**
     * @return array|string[]
     */
    public function getSubscribedEvents()
    {
        return [
            Events::postUpdate,
        ];
    }

    /**
     * @param LifecycleEventArgs $event
     */
    public function postUpdate(LifecycleEventArgs $event)
    {
        $entity = $event->getEntity();
        $object = $event->getObject();

        $entity === $object; //true...
    }
}

据我所知,这两种方法返回完全相同的对象,即它们指向给定实体的相同实例。

总是这样吗?

应该使用一个而不是另一个还是无关紧要?

标签: phpsymfonydoctrine-ormdoctrinesymfony4

解决方案


没有区别。该getObject()方法来自包LifecycleEventArgs提供的类的父类doctrine/persistence

当您想为多个 Doctrine 实现(例如 ORM 和 ODM)构建集成层并且在这种情况下您将使用getObject().


推荐阅读