2014-03-26 56 views
0

我必须在DB:用户,配置文件中的表。 表格配置文件有一个名为user_id的字段。Symfony2一对一关联双向

class User { 
    .... 

    /** 
    * @var \MyBundle\Entity\Profile 
    * @ORM\OneToOne(targetEntity="Profile", mappedBy="user") 
    * 
    */ 
    private $profile; 

    .... 
} 

而且档案类:

class Profile { 
     .... 

     /** 
     * @var \MyBundle\Entity\User 
     * @ORM\OneToOne(targetEntity="User", inversedBy="profile") 
     * @ORM\JoinColumn(name="user_id", referencedColumnName="id") 
     * 
     */ 
     private $user; 

     .... 
    } 

当我试图让通过ID配置文件,然后使用->getUser()它工作正常,但如果我的id来获取用户,然后想->getProfile()这是行不通的(返回null)。

$user = $this->getDoctrine() 
      ->getRepository('MyBundle:User') 
      ->find(76322); 

$user->getProfile(); // returns null :(

$profile = $this->getDoctrine() 
      ->getRepository('MyBundle:Profile') 
      ->find(12334); 

$profile->getUser(); // return User object 
+0

确定提供的ID有相关的配置文件还是存在? – Javad

+0

是的,我确定.. – latata

+0

你在函数getProfile中有什么? – Javad

回答

0

试试这个..

class User { 
    .... 

    /** 
    * @var \MyBundle\Entity\Profile 
    * @ORM\OneToOne(targetEntity="Profile", mappedBy="users") 
    * 
    */ 
    private $profiles; 

    .... 
} 

档案类:

class Profile { 
      .... 

      /** 
      * @var \MyBundle\Entity\User 
      * @ORM\OneToOne(targetEntity="User", inversedBy="profiles") 
      * 
      */ 
      private $users; 

      .... 
     } 

享受!

0

Finnaly解决了。 我也有实体元数据的XML文件。我删除了它们。工作正常。