2012-06-25 20 views
7

मैं symfony2 के लिए नया हूं और 2 इकाइयों के बीच बाएं जुड़ने में परेशानी है। मैं निम्न त्रुटि संदेश हो रही है, और कैसे इस समस्या को हल करने के लिए पता नहीं है:सिम्फनी वन-टू-वन रिलेशन

[Semantical Error] line 0, col 69 near 'i': Error: Class Bundle\Entity\Users has no association named user_id

इकाई उपयोगकर्ता:

class Users 
{ 
    /** 
    * @ORM\Id 
    * @ORM\Column(name="user_id", type="string", length="16") 
    * @ORM\OneToOne(targetEntity="UsersInformation", mappedBy="Users") 
    */ 
    protected $user_id; 

    /** 
    * @ORM\Column(type="string", length="255") 
    */ 
    protected $username; 


    /** 
    * @ORM\Column(type="string", length="32") 
    */ 
    protected $password; 

    ... 

    /** 
    * Set user_id 
    * 
    * @param string $userId 
    */ 
    public function setUserId($userId) 
    { 
     $this->user_id = $userId; 
    } 

    /** 
    * Get user_id 
    * 
    * @return string 
    */ 
    public function getUserId() 
    { 
     return $this->user_id; 
    } 

    ... 
} 

इकाई UsersInformation:

class UsersInformation 
    { 
    /** 
    * @ORM\Id 
    * @ORM\Column(type="string", length="16") 
    * @ORM\OneToOne(targetEntity="Users", inversedBy="UsersInformation") 
    * @ORM\JoinColumn(name="user_id", referencedColumnName="user_id") 
    */ 
    protected $user_id; 

    /** 
    * @ORM\Column(type="string", length="255") 
    */ 
    public $email; 

    /** 
    * @ORM\Column(type="string", length="1") 
    */ 
    public $gender; 

    /** 
    * @ORM\Column(type="string", length="255") 
    */ 
    public $company; 

    .... 
    } 

UsersRepository तरह लग रहा है यह:

public function getAllUsers($limit = null) 
    { 
     $qb = $this->createQueryBuilder('u') 
        ->select('u, i') 
        ->leftJoin('u.user_id', 'i'); 


     if (false === is_null($limit)) 
      $qb->setMaxResults($limit); 

     return $qb->getQuery() 
        ->getResult(); 
    } 

मैं क्या गलत कर रहा हूँ?

उत्तर

15

मुझे लगता है कि क्वेरीबिल्डर ठीक दिखता है। आपकी समस्या डेटा संरचना में होने की संभावना है।

जिस तरह से आप आम तौर पर इस दृष्टिकोण से संपर्क करते हैं, वह प्रति संबंध संपत्ति स्थापित कर रहा है। आपके Users वर्ग के लिए यह information या userInformation उदाहरण के लिए एक समझ में आता है।

शायद ऐसा कुछ मदद करता है?

class User 
{ 
    /** 
    * @ORM\Id 
    */ 
    protected $id; 

    /** 
    * @ORM\OneToOne(targetEntity="UserInformation") 
    */ 
    protected $information; 
} 

class UserInformation 
{ 
    /** 
    * @ORM\Id 
    */ 
    protected $id; 

    /** 
    * @ORM\OneToOne(targetEntity="User", inversedBy="information") 
    * @ORM\JoinColumn(name="user_id", referencedColumnName="id") 
    */ 
    protected $user; 
}