Symfony EntityRepository 返回“Proxies\__CG__ MyModelName”的实例

2024-01-09

Query

$em->getRepository($this->getRepositoryName('AppBundle:User'))->find($id);

返回对象实例Proxies\__CG__\AppBundle\Entity\User代替AppBundle\Entity\User。这是什么原因呢?


Doctrine 为您提供一个来自自动生成的类的代理对象,该类扩展您的实体并实现\Doctrine\ORM\Proxy\Proxy。您可以在以下位置查看这些自动生成的类的代码app/cache/dev/doctrine/orm/Proxies/.

代理对象允许 Doctrine 提供的一组行为,否则您必须显式编码到实体中,包括对属性延迟加载的支持。例如,如果您的对象具有对另一个实体的引用(例如来自OneToOne/OneToMany/ManyToOne/ManyToMany关联),您不一定希望在检索时始终加载这些引用User记录下来,因为它们可能并不总是相关的。延迟加载允许稍后按需引入数据。

为了执行延迟加载,实体需要访问 Doctrine,以便它可以要求 Doctrine 检索相关数据。这是通过一个__initializer__提供给代理对象的属性。剩下的事情就会发生,由 Doctrine 处理,而您的代码不需要知道细节。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Symfony EntityRepository 返回“Proxies\__CG__ MyModelName”的实例 的相关文章

随机推荐