У меня есть два объекта в моем проекте: Пользователь и Аватар.
Пользователь владеет 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 или другим примерам конфигурации.