Как работать с Doctrine ObjectManager так же, как и с SQL запросом с JOIN? ZF2?

Привет.

Допустим, есть 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)?
  • Вопрос задан
  • 2579 просмотров
Пригласить эксперта
Ответы на вопрос 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Да почитайте вы уже доментацию по Zend2/Doctrine! Честное слово, уже даже как-то не интересно.

Читать про DQL или QueryBuilder.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы