Symfony2 + Doctrine: получение информации от 2 сущностей

Я использую Symfony2 и FOSCommentBundle, и я добавил comment к определенному объекту App\MyBundle\Post.

Я хочу получить всю информацию, касающуюся всех App\MyBundle\Post и всех указанных comment, я имею в виду, что если у меня есть 2 комментария к сообщению, я хочу, чтобы он вернул меня в мою строку, например:

P. *, 2 как nbComment

Итак, я попробовал этот код:

    $query = $this->getEntityManager()->createQuery ('
           SELECT      P, COUNT(C.id) as nbComment
           FROM        AppMyBundle:Post P
           LEFT JOIN   AppMyBundle:Comment C ON C.id=CONCAT('post_',P.id)
           GROUP BY    P.id
           ORDER BY    P.dEvent DESC, P.dCreated DESC'
    );

Но у меня ошибка:

[Семантическая ошибка] строка 0, столбец 96 рядом с 'Com ON C.id = CONCAT ("post _", P.id) WHERE': Ошибка: комментарий к идентификационной переменной используется в выражении пути соединения, но не был определен ранее.

Помогите, пожалуйста

Спасибо Сэм


person Sam    schedule 17.01.2012    source источник


Ответы (1)


Это не то, как вы выполняете LEFT JOIN в DQL. См. Здесь в руководстве по .

person greg0ire    schedule 17.01.2012
comment
Хорошо, я знаю, что я не могу выполнить левое соединение «on» в соответствии с документацией, но у меня нет физической связи между сущностью сообщения и сущностью комментария. Единственная ссылка, которая у меня есть: comment.id = CONCAT ('post _', post.id) - person Sam; 17.01.2012
comment
Ой. Понятно. Я думаю, вам действительно нужна физическая ссылка. Напишите миграцию sql в новую структуру таблицы, вы получите скорость и удобство использования. - person greg0ire; 17.01.2012
comment
Что ты имеешь в виду? У меня должен быть comment_id, например CONCAT ('mytable _', mytable.id), потому что я хочу создать экземпляр комментария для нескольких сущностей. Так что я не знаю, как я могу это сделать ... - person Sam; 17.01.2012
comment
Если вы хотите связать несколько сущностей, я думаю, вам придется добавить столбец для каждой сущности в своей таблице комментариев. Я не уверен, что это лучшее решение, но я думаю, что оно лучше, чем то, что у вас есть сейчас. Я думаю, вам следует написать еще один вопрос именно по этой проблеме моделирования. - person greg0ire; 17.01.2012