我的数据库中有两个表:user
和media_contact
。media_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());