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

/** @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)

Класс Proxies__CG __ \ Doctrine \ Documents \ Entities \ Entity2 # 178 (6) {
публичные $инициализатор => Закрытие класса # 160 (3) {public $ static =>
array (2) {‘documentPersister’ => class
Doctrine \ ODM \ MongoDB \ Persisters \ DocumentPersister # 166 (11) {…}
‘refleId’ => class ReflectionProperty # 165 (2) {…}} public
$ this => class Doctrine \ ODM \ MongoDB \ Proxy \ ProxyFactory # 78 (7) {
private $ metadataFactory => class
Doctrine \ ODM \ MongoDB \ Mapping \ ClassMetadataFactory # 74 (9) {…}
личное $ uow => класс 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 $ определений => array (1) {…}
private $ metadataFactory => class
Doctrine \ ODM \ MongoDB \ Mapping \ ClassMetadataFactory # 74 (9) {…}}
public $ parameter => array (1) {‘$ proxy’ => string (10) «»}} public
$Cloner => Закрытие класса # 170 (3) {public $ static => array (3) {
‘documentPersister’ => класс
Doctrine \ ODM \ MongoDB \ Persisters \ DocumentPersister # 166 (11) {…}
‘classMetadata’ => class
Doctrine \ ODM \ MongoDB \ Mapping \ ClassMetadata # 155 (38) {…}
‘refleId’ => class ReflectionProperty # 165 (2) {…}} public
$ this => class Doctrine \ ODM \ MongoDB \ Proxy \ ProxyFactory # 78 (7) {
private $ metadataFactory => class
Doctrine \ ODM \ MongoDB \ Mapping \ ClassMetadataFactory # 74 (9) {…}
личное $ uow => класс 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 $ определений => array (1) {…}
private $ metadataFactory => class
Doctrine \ ODM \ MongoDB \ Mapping \ ClassMetadataFactory # 74 (9) {…}}
public $ parameter => array (1) {‘$ proxy’ => string (10) «»}} public
$IsInitialized => bool (false) защищен $ _id => NULL защищен
$ label => NULL protected $ id => string (24) «54de5341642c8769150041a7»}

0

Решение

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

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

смотреть documetation

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]