Ich habe zwei Entitäten in meinem Projekt: Benutzer und Avatar.Lazy Loading vermeiden Doctrine Symfony2
Benutzer besitzt Avatar mit einer OneToOne-Beziehung.
Avatar ist eine Entität mit einem Dateiobjekt und einem fileName. Es verwendet @ORM \ HasLifecycleCallbacks, um die Datei zu speichern oder zu entfernen, wie in der Symfony2 documentation beschrieben.
In meinem Controller, mag ich die Avatar Entität aus dem aktuellen Benutzer entfernen (i $currentUser = $this->get('security.context')->getToken()->getUser()
verwenden), aber ich kann den Avatar mit $currentUser->getAvatar()
nicht bekommen:
var_dump($currentUser->getAvatar());exit;
Ausgang:
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
Aber wenn ich tun
$whatever = $currentUser->getAvatar()->getFileName();
var_dump($currentUser->getAvatar());exit;
Ausgang:
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'
Das ist ziemlich nervig ... Hat jemand einen Hinweis, um das zu vermeiden?
Vielen Dank so Mutch, ich habe jetzt stundenlang gesucht! (Es ist "Eager", "eifrig" werfen eine Ausnahme) – Leogout
Danke, aktualisiert. – Anonymous
Das Ändern des Abrufmodus während einer Abfrage ist nur für Eins-zu-Eins- und Viele-zu-Eins-Beziehungen möglich. –