Symfony2一对一关联双向

时间:2014-03-26 13:50:50

标签: mysql symfony doctrine-orm doctrine one-to-one

我必须在DB中使用表:user,profile。 表格配置文件有一个名为user_id的字段。

class User {
  ....

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

  ....
}

和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

2 个答案:

答案 0 :(得分: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;

          ....
        }

享受!

答案 1 :(得分:0)

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