原则2多对一关系不起作用



我的数据库中有两个表: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
/** 
 * @ORMOneToMany(targetEntity="MediaContact", mappedBy="user")
 */
private $mediaContacts;

-

// MediaContact.php
/** 
 * @ORMManyToOne(targetEntity="User", inversedBy="mediaContacts")
 * @ORMJoinColumn(name="user_id", referencedColumnName="id")
 */
private $user;

可能出了什么问题?

您必须使用$this->getId()而不是$this才能工作:

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

最新更新