Привет.
Допустим, есть 2 таблицы. Есть новости и есть категории. Чтобы получить такой ответ:
id_новости имя_категории название_новости текст_новости дата_создания_новости
В SQL мы бы написали что-то вроде такого:
select n.id, c.name, n.title, n.text, n.created from News as n inner join Category as c on c.id = n.category_id
В моем случае мы не работает напрямую с запросами, а работает с моделями — с ObjectManager.
Например, сейчас я работаю с OM так:
$news = $objectManager
->getRepository('\News\Entity\NewsItem')
->findBy(array(), array('created' => 'DESC'));
Это выдаст такой ответ:
id_новости, id_категории, заголовок, текст, дата_создания_новости
Как сюда добавить имя категории? Обычный JOIN в данном случае не напишешь.
Предположил, что я такой "умный" не один и в Doctrine2 должен быть какой-то механизм для этого. Отношения таблиц: Новости М - 1 Категории. Погуглил и нашел
это. Похоже на мой случай. Но перед тем как бросаться в пекло, хотел бы уточнить. Как в итоге тогда будет выглядеть все вместе? Я предполагаю, что у меня будет после всего этого 3 модели. Новости, Категории, Новости-Категории. Первая и вторая будут использоваться для обычных конструкторов (создание, удаление и т.п. категорий или новостей), а третья только для вывода? Или только 2 модели? Вот на счет этого предположения есть большие сомнения. Поясните, пожалуйста, как должен выглядеть конечный вариант.
Как в итоге, работать с получившимися моделями? Как получить то, что я хотел в начале статьи (такое же поведение, как и у SQL query с JOIN statement)?