0
/** @ODM\Document(collection="Entities") */
class Entity extends Document {

    /** @ODM\Id */
    protected $_id;

    /** @ODM\ReferenceOne(targetDocument="\Doctrine\Documents\Entities\Entity2", simple=true) */
    protected $entity2;
}

/** @ODM\Document(collection="Entities2") */
class Entity2 extends Document {

    /** @ODM\Id */
    protected $_id;

    /** @ODM\String */
    protected $label;
}

我的问题是当我调用引用实体$entity->getEntity2()时,它返回entity2但带有public $__isInitialized__ => bool(false). 然后当我尝试调用$entity->getEntity2()->getId()它时Doctrine\ODM\MongoDB\DocumentNotFoundException The "Proxies\__CG__\Doctrine\Documents\Entities\Entity2" document with identifier "54de5341642c8769150041a7" could not be found.

奇怪的是,当我在框架中渲染之前调用它时会发生这种情况。当我在渲染方法中执行相同操作时,它可以工作,但例如在表单提交处理方法中它不起作用......

我已经清理了缓存、代理和水合器。带有这个的文档ObjectID在我的数据库中,它被返回,只是没有初始化,除了渲染方法之外,不能得到它的任何属性

这是通过调用getEntity2()(mind $__isInititalized = false)返回的

类 Proxies__CG__\Doctrine\Documents\Entities\Entity2#178 (6) { public $ initializer=> class Closure#160 (3) { public $static => array(2) { 'documentPersister' => class Doctrine\ODM\MongoDB\Persisters\DocumentPersister#166 (11) { ... } 'reflectionId' => class ReflectionProperty#165 (2) { ... } } public $this => class Doctrine\ODM\MongoDB\Proxy\ProxyFactory#78 (7) { private $metadataFactory => class Doctrine\ODM\MongoDB\Mapping\ClassMetadataFactory# 74 (9) { ... } private $uow => class Doctrine\ODM\MongoDB\UnitOfWork#76 (23) { ... } private $proxyNamespace => string(7) "Proxies" private $proxyGenerator => class Doctrine\Common\Proxy\ProxyGenerator#79 (4) { ... } private $autoGenerate => int(1) private $definitions => array(1) { ... } private $metadataFactory => class Doctrine\ODM\ MongoDB\Mapping\ClassMetadataFactory#74 (9) { ...} } public $parameter => array(1) { '$proxy' => string(10) "" } } public $克隆人=> class Closure#170 (3) { public $static => array(3) { 'documentPersister' => class Doctrine\ODM\MongoDB\Persisters\DocumentPersister#166 (11) { ... } 'classMetadata' => class Doctrine\ODM\MongoDB\Mapping\ClassMetadata#155 (38) { ... } 'reflectionId' => class ReflectionProperty#165 (2) { ... } } public $this => class Doctrine\ODM\MongoDB\ Proxy\ProxyFactory#78 (7) { private $metadataFactory => class Doctrine\ODM\MongoDB\Mapping\ClassMetadataFactory#74 (9) { ... } private $uow => class Doctrine\ODM\MongoDB\UnitOfWork#76 ( 23) { ... } private $proxyNamespace => string(7) "Proxies" private $proxyGenerator => class Doctrine\Common\Proxy\ProxyGenerator#79 (4) { ... } private $autoGenerate => int(1 ) 私有 $definitions => 数组(1) { ...} private $metadataFactory => class Doctrine\ODM\MongoDB\Mapping\ClassMetadataFactory#74 (9) { ... } } public $parameter => array(1) { '$proxy' => string(10) "" } } 公共 $isInitialized => bool(false) protected $_id => NULL protected $label => NULL protected $id => string(24) "54de5341642c8769150041a7" }

4

1 回答 1

0

我认为问题可能导致使用“simple = true”

简单引用减少了文档本身和引用字段上的任何索引所使用的存储量;但是,简单引用不能与鉴别器一起使用,因为没有 DBRef 对象可以存储鉴别器值。

文档

于 2015-02-26T16:02:46.260 回答