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

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

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

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

В моем контроллере я хочу удалить сущность Аватар от текущего пользователя (я использую $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'

Это довольно раздражает … Кто-нибудь знает, как этого избежать?

11

Решение

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

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

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

20

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

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

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