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

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' => класс Doctrine\ODM\MongoDB\Persisters\DocumentPersister # 166 (11) {...} 'reflectionId' => класс ReflectionProperty # 165 (2) {...}} public $ this => класс Doctrine\ODM\MongoDB\Proxy\ProxyFactory # 78 ( 7) {private $ metadataFactory => класс Doctrine\ODM\MongoDB\Mapping\ClassMetadataFactory # 74 (9) {...} private $ uow => класс Doctrine\ODM\MongoDB\UnitOfWork # 76 (23) {... } private $ proxyNamespace => строка (7) "Proxies" private $ proxyGenerator => класс Doctrine\Common\Proxy\ProxyGenerator # 79 (4) {...} private $ autoGenerate => int (1) private $ определения => array (1) {...} private $ metadataFactory => класс 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 => 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 $ isInitialized => bool(false) protected $_id => NULL protected $label => NULL protected $id => string(24) "54de5341642c8769150041a7" } => класс Doctrine\ODM\MongoDB\Persisters\DocumentPersister # 166 (11) {...} 'classMetadata' => класс Doctrine\ODM\MongoDB\Mapping\ClassMetadata # 155 (38) {...} 'reflectionId' => класс ReflectionProperty # 165 (2) {...}} public $ this => класс Doctrine\ODM\MongoDB\Proxy\ProxyFactory # 78 (7) {private $ metadataFactory => класс Doctrine\ODM\MongoDB\Mapping\ClassMetadataFactory # 74 (9) {...} private $ uow => класс Doctrine\ODM\MongoDB\UnitOfWork # 76 (23) {...} private $ proxyNamespace => строка (7) "Proxies" private $ proxyGenerator => класс Doctrine\Common\Proxy\ProxyGenerator # 79 (4) {...} private $ autoGenerate => int (1) private $ definitions => array (1) {...} private $ metadataFactory => класс Doctrine\ODM\MongoDB\Mapping\ClassMetadataFactory # 74 (9) {...}} public $ parameter => array (1) {'$ proxy' => string (10) ""}} public $ isInitialized => bool (false ) protected $ _id => NULL protected $ label => NULL protected $ id => string (24) "54de5341642c8769150041a7"}

Теги:
doctrine
doctrine-odm
doctrine-mongodb

1 ответ

0

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

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

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

  • 0
    Я не обнаружил проблем с другими объектами с simple=true ... IMO, это просто ошибка, но я не нашел причину этого ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню