Невозможно получить свойства объекта, на которые есть ссылка, в любое время, только в методе отрисовки

/** @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() (ума $__isInititalized = false)

class 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) "Прокси" 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 $ cloner => 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 => класс Doctrine \ ODM \ MongoDB \ Mapping \ ClassMetadataFactory # 74 (9) {...} частный $ uow => класс Doctrine \ ODM \ MongoDB \ UnitOfWork # 76 (23) {. ..} private $ proxyNamespace => string (7) "Прокси" private $ proxyGenerator => class Doctrine \ Common \ Proxy \ ProxyGenerator # 79 (4) {...} private $ autoGenerate => int (1) private $ определения => array (1) {...} private $ metadataFactory => class Doctrine \ ODM \ MongoDB \ Mapping \ ClassMetadataFactory # 74 (9) {...}} public $ parameter => array (1) {'$ proxy '=> string (10) ""}} public $ isInitialized => bool (false) protected $ _id => NULL pro tected $ label => NULL protected $ id => string (24) "54de5341642c8769150041a7"}


person simPod    schedule 14.02.2015    source источник


Ответы (1)


Я думаю, проблема может быть причиной использования "simple = true"

Простые ссылки сокращают объем используемого хранилища как для самого документа, так и для любых индексов в поле ссылки; однако простые ссылки не могут использоваться с дискриминаторами, поскольку нет объекта DBRef, в котором можно было бы сохранить значение дискриминатора.

посмотрите документацию

person websky    schedule 26.02.2015
comment
Нет проблем с другими сущностями с simple=true Я обнаружил ... ИМО, это просто ошибка, но я не нашел ее причину ... - person simPod; 28.02.2015