2016-12-20 1 views
4

Я использовал доктрину запрос пользователя:Symfony: Почему isInitialized всегда ложь?

$customer = $this->getDoctrine()->getRepository('DemoUserBundle:Customer')->find(1); 

Но я получил результат:

Клиент {# 1441 ▼ + IsInitialized: ложный -id: 1 -username: нулевой -nickname: null -fail: null -salt: null -password: null -roles: null -e nabled: нулевой -lastLogin: нулевой -expired: нулевой -expiredAt: нулевой -created: нулевой -modified: нулевой -группа: нулевой -ceilphoneCode: нулевой -avatar: неопределенные -tasks: нулевой - приложения: нулевые -companies: нулевая -creators: нулевая Прообразы: нулевой -ФИРМА: нулевой -store: Store {# 1440} ▶ -realName: нуль -sex: нулевой -Возраст: нулевой - принадлежитКомпания: null -address: null -career: нулевой -relationProducts: нулевая -attributes: нулевой -medias: нуль -logs: нулевая ... 2 }

результат не завершен, где другие данные этого пользователя? почему isInitialized является ложным?

+0

Как насчет того, когда вы запрашиваете базу данных для id = 1? –

ответ

1

isInitialized является ложным, потому что вы получаете объект Proxy от EntityManager. Вероятно, вы загрузили объект с Customer с идентификатором 1 в качестве ассоциации где-то ранее в вашем приложении. Этот связанный объект не был подключен (не загружен) и в результате тот же Proxy теперь возвращается с вашего EntityManager. Обычно find должен возвращать полностью загруженный объект.

Читайте также this GitHub post где аналогичный вопрос обсуждается

1

Я добавил fetch="EAGER" к другому лицу, которое называется этот объект, и это нормально для меня.

Попробуйте $customer = $this->getDoctrine()->getRepository('DemoUserBundle:Customer')->find(1);

и $customer = $this->getDoctrine()->getRepository('DemoUserBundle:Customer')->find(2);

И вы поймете.