Доктрина 2 отношения «многие к одному» не работают - PullRequest
1 голос
/ 31 марта 2012

В моей базе данных две таблицы: 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

/** 
 * @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 Ответ

1 голос
/ 31 марта 2012

Вы должны использовать $this->getId() вместо $this, чтобы он работал:

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