学说2多对一关系不起作用

时间:2012-03-31 15:14:03

标签: symfony doctrine-orm

我的数据库中有两个表:usermedia_contactmedia_contact表格有user_id,因此,显然,我的目的是能够根据用户选择媒体联系人。

我遇到的问题是失败了:

// VNN/PressboxBundle/Entity/User.php
// $this in this case is a User object with id 26
$customContacts = $em->getRepository('VNNPressboxBundle:MediaContact')->findByUser($this);

这对我没有任何帮助。 $customContacts是空的。但是:

mysql> select * from media_contact where user_id=26;
+-----+-------------+-----------------------+---------------+---------+
| id  | name        | email                 | media_area_id | user_id |
+-----+-------------+-----------------------+---------------+---------+
| 177 | Jason Swett | jason.swett@gmail.com |          NULL |      26 |
| 183 | Sam         | sam@sam.com           |          NULL |      26 |
+-----+-------------+-----------------------+---------------+---------+
2 rows in set (0.00 sec)

它应该真正返回两个对象。我真的不明白为什么会这样。

以下是我的注释:

// User.php

/** 
 * @ORM\OneToMany(targetEntity="MediaContact", mappedBy="user")
 */
private $mediaContacts;

-

// MediaContact.php
/** 
 * @ORM\ManyToOne(targetEntity="User", inversedBy="mediaContacts")
 * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
 */
private $user;

可能出现什么问题?

1 个答案:

答案 0 :(得分:1)

您必须使用$this->getId()代替$this才能使其正常工作:

$customContacts = $em->getRepository('VNNPressboxBundle:MediaContact')->findByUser($this->getId());