Избегайте ленивой загрузки Doctrine Symfony2

У меня есть два объекта в моем проекте: Пользователь и Аватар.

Пользователь владеет Avatar с отношением OneToOne.

Аватар – это объект с файловым объектом и fileName. Он использует @ORM \ HasLifecycleCallbacks для сохранения файла или его удаления, как описано в документации Symfony2 .

В моем контроллере я хочу удалить объект Avatar из текущего пользователя (я использую $currentUser = $this->get('security.context')->getToken()->getUser() ), но я не могу получить аватар с помощью $currentUser->getAvatar() :

 var_dump($currentUser->getAvatar());exit; 

Вывод :

 object(Proxies\__CG__\Participso\UserBundle\Entity\Avatar)[355] public '__initializer__' => object(Closure)[348] public '__cloner__' => object(Closure)[349] public '__isInitialized__' => boolean false private 'id' (Participso\UserBundle\Entity\Avatar) => int 20 public 'file' => null private 'fileName' (Participso\UserBundle\Entity\Avatar) => null 

Но если я это сделаю

 $whatever = $currentUser->getAvatar()->getFileName(); var_dump($currentUser->getAvatar());exit; 

Вывод :

 object(Proxies\__CG__\Participso\UserBundle\Entity\Avatar)[355] public '__initializer__' => object(Closure)[348] public '__cloner__' => object(Closure)[349] public '__isInitialized__' => boolean false private 'id' (Participso\UserBundle\Entity\Avatar) => int 20 public 'file' => null private 'fileName' (Participso\UserBundle\Entity\Avatar) => string 'd4e5eadd3757498a22b14ad1f81869c2baf459d3.png' 

Это очень раздражает … У кого-то есть ключ, чтобы избежать этого?

Как описано в документах Doctrine , вам просто нужно указать, что поведение выборки должно быть нетерпеливым.

 /** * @OneToOne(targetEntity="User", fetch="EAGER") * @JoinColumn(name="user_id", referencedColumnName="id") */ 

См. Документацию по YAML или другим примерам конфигурации.