2015-08-01 6 views
10

मेरे पास मेरी परियोजना में दो इकाइयां हैं: उपयोगकर्ता और अवतार।आलसी लोडिंग से बचें सिद्धांत सिम्फनी 2

उपयोगकर्ता एक वनटोन संबंध के साथ अवतार का मालिक है।

अवतार फ़ाइल ऑब्जेक्ट और फ़ाइल नाम के साथ एक इकाई है। यह फ़ाइल को सहेजने के लिए @ORM \ HasLifecycleCallbacks का उपयोग करता है या इसे Symfony2 documentation में वर्णित अनुसार निकालने के लिए उपयोग करता है।

मेरी नियंत्रक में, मैं वर्तमान उपयोगकर्ता (मैं का उपयोग $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' 

यह बहुत परेशान है ... क्या किसी के पास इससे बचने के लिए कोई सुराग है?

उत्तर

16

जैसा कि Doctrine docs में वर्णित है, आपको केवल उत्सुक व्यवहार को उत्सुक होने की आवश्यकता है।

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

वाईएएमएल या अन्य कॉन्फ़िगरेशन उदाहरणों के लिए प्रलेखन देखें।

+0

धन्यवाद तो मैच, मैं अब घंटों की खोज कर रहा हूं! (यह "ईगर" है, "उत्सुक" एक exeption फेंक) – Leogout

+0

धन्यवाद, अद्यतन। – Anonymous

+0

किसी क्वेरी के दौरान फ़ेच मोड को बदलना केवल एक-से-एक और कई-से-एक संबंधों के लिए संभव है। –

संबंधित मुद्दे