教义2 - 奇怪的findBy()函数

时间:2012-07-11 15:44:44

标签: php database doctrine-orm

我试图用Doctrine 2从数据库中获取数据,但是我遇到了findBy()函数的问题。

我有实体用户

/**
 * @ORM\id
 * @ORM\generatedValue
 * @ORM\column(type="integer")
 */
private $id;

/**
 * @ORM\column(type="string", length=32, unique=true)
 */
private $user;

实体 UserList

/**
 * @ORM\id
 * @ORM\generatedValue(strategy="NONE")
 * @ORM\oneToOne(targetEntity="User")
 * @ORM\joinColumn(name="user_id", referencedColumnName="id")
 */
private $id;

/**
 * @ORM\oneToOne(targetEntity="User")
 * @ORM\joinColumn(name="parent_id", referencedColumnName="id")
 */
private $parent = null;

我有数据表:

Users:
 +----+------+
 | id | user |
 +----|------+
 | 1  | John |
 | 2  | Jane |
 | 3  | Doe  |
 +----+------+

UsersList (id 3 have two parents):
 +---------+-----------+
 | user_id | parent_id |
 +---------|-----------+
 |    1    |    NULL   |
 |    2    |    NULL   |
 |    3    |     1     |
 |    3    |     2     |
 +---------+-----------+

我想得到Doe的(身份3)父母:

 $user = $this->entityManager->getRepository('User')->findByUser('Doe');
 $user_parents = $this->entityManager->getRepository('UserList')->findById($user);

 foreach($user_parents as $parent)
 {
     var_dump($parent);
 }

返回:

 UserList(2) {
    id private => 3
    parent private => 1
 }
 UserList(2) {
    id private => 3
    parent private => 1 //this should be 2
 }

问题出在哪里?感谢。

1 个答案:

答案 0 :(得分:0)

您应该将@Id注释添加到UserList::$parent媒体资源中。