2013-02-20 14 views
5

मैं अपने कोड simplifly होगा, मैं ते अगले हैSymfony ManyToOne संबंध गेटर रिटर्न खाली ऑब्जेक्ट

use \...\...\Entity\Doctor; 

... 

class Paciente extends Usuario { 

    } 

    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 


    /** 
    * @ORM\ManyToOne(targetEntity="Doctor", inversedBy="pacientes") 
    * @ORM\JoinColumn(name="doctorNum", referencedColumnName="numColegiado", nullable=TRUE) 
    * 
    * @var type 
    */ 
    protected $doctor; 

    ... 

    /** 
    * Set doctor 
    * 
    * @param Doctor $doctor 
    * @return Paciente 
    */ 
    public function setDoctor(Doctor $doctor = null) 
    { 
     $this->doctor = $doctor; 

     return $this; 
    } 

    /** 
    * Get doctor 
    * 
    * @return Doctor 
    */ 
    public function getDoctor() 
    { 
     return $this->doctor; 
    } 
} 

ठीक है, बात है, जब मैं उस कोड को निष्पादित करता हूं (निश्चित रूप से एक रिश्ता बनाया गया है और यह ऑब्जेक्ट डेटाबेस में मौजूद है):

\Doctrine\Common\Util\Debug::dump($paciente->getDoctor()); 

यह प्रिंट कि इस प्रकार है:

object(stdClass)#804 (28) { ["__CLASS__"]=> string(34) "Knoid\CorcheckBundle\Entity\Doctor" ["__IS_PROXY__"]=> bool(true) ["__PROXY_INITIALIZED__"]=> bool(false) ["id"]=> NULL ["numColegiado"]=> NULL ["pacientes"]=> NULL ["nombre"]=> NULL ["apellidos"]=> NULL ["dni"]=> NULL ["tipo"]=> NULL ["username"]=> NULL ["usernameCanonical"]=> NULL ["email"]=> NULL ["emailCanonical"]=> NULL ["enabled"]=> NULL ["salt"]=> NULL ["password"]=> NULL ["plainPassword"]=> NULL ["lastLogin"]=> NULL ["confirmationToken"]=> NULL ["passwordRequestedAt"]=> NULL ["groups"]=> NULL ["locked"]=> NULL ["expired"]=> NULL ["expiresAt"]=> NULL ["roles"]=> NULL ["credentialsExpired"]=> NULL ["credentialsExpireAt"]=> NULL } 

आप देख सकते हैं, सभी "डॉक्टर" वस्तु के गुण अशक्त हैं, वस्तु मौजूद है, लेकिन यह खाली है, इस वस्तु मौजूद है मेरी DB में और यह नहीं ' खाली नहीं

क्या हो रहा है इसके बारे में कोई विचार?

उत्तर

3

ऐसा इसलिए है क्योंकि प्रॉक्सी ऑब्जेक्ट अभी तक प्रारंभ नहीं हुआ है। इसे शुरू करने का एक तरीका, ऑब्जेक्ट से पूछताछ करना है उदा। $doctor->getId()। यदि आप उसके बाद ऑब्जेक्ट को डंप करते हैं, तो आप देखेंगे कि सभी विशेषताएं 'दृश्यमान' हैं

+0

किसी भी तरह से इससे संबंधित है। अब मैंने इस अपवाद को प्राप्त किया: "[1/2] त्रुटि अपवाद: नोटिस: अपरिभाषित अनुक्रमणिका: id /var/www/vhosts/default/htdocs/Symfony/app/cache/dev/doctrine/orm/Proxies/__CG__KnoidCorcheckBundleEntityDoctor.php लाइन में आईडी 48 "लेकिन केवल अगर मैं डॉक्टर की आईडी प्राप्त करने का प्रयास करता हूं। –

+0

मुझे लगता है कि आपने आईडी के लिए गेटटर परिभाषित/उत्पन्न किया है? –

+0

हां, "सार्वजनिक फ़ंक्शन getId() { $ $-> आईडी; }" डॉक्टर इकाई वर्ग –

0

थॉमस के उत्तर ने मेरे अपने बंडल में मेरे लिए काम किया। अगर मैं का अनुवाद मैं क्या किया:

$myPaciente = $em->getRepository('MyBundle:Paciente')->findOneBy(array('numColegiado' => $value)); 

मैं $myPaciente->getDoctor()->getName();

जोड़ने फिर initialisation किया गया था और मैं $ myPaciente इसे से संबंधित डॉक्टर के बारे में सभी जानकारी के साथ डंप कर सकता है।

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