Я использую доктрину с фреймворком symfony2.У меня есть сущность «Вопрос», которая может иметь несколько «Тем».Таким образом, я определил это отношение «многие к мая» (с другой стороны, темы могут иметь несколько вопросов) в yml:
manyToMany:
themes:
targetEntity: Theme
joinTable:
name: question_themes
joinColumns:
question_id:
referencedColumnName: id
inverseJoinColumns:
theme_id:
referencedColumnName: id
И внутри класса сущностей Вопрос:
private $themes;
public function setThemes($themes) {
$this->themes = $themes;
}
public function getThemes() {
return $this->themes;
}
Здесь question_themes - это таблица (в MySQL), которая содержит отношение «многие ко многим», т. Е. Question_id и theme_id.
Теперь, когда я получаю данные вопроса по:
$questions = $this->getDoctrine()->getRepository('MyBundle:Question')->findAll();
или
$questions = $this->getDoctrine()->getRepository('MyBundle:Question')->findBy(
array('locale'=>$locale),
array('createdAt' => 'DESC')
);
и т. Д.он выбирает все связанные данные темы вместе с вопросами, например
foreach($questions as $question) {
foreach($question->getThemes() as $theme) {
// some code
}
}
Все выглядит идеально.Но всякий раз, когда я получаю данные вопроса с помощью:
$question = $this->getDoctrine()->getRepository('MyBundle:Question')->find($question_id);
или
$question = $this->getDoctrine()->getRepository('MyBundle:Question')->findById($question_id);
и т. Д., Связанные данные темы не выбираются, и поэтому я получаю ошибку в цикле foreach:
foreach($question->getThemes() as $theme) {
// some code
}
Может ли кто-нибудь помочь в этом, так как я новичок в доктрине и Symfony2?
Спасибо