2012-01-17 44 views
0

我使用Symfony2FOSCommentBundle,并且我已将comment添加到特定实体App\MyBundle\PostSymfony2 + Doctrine:从2个实体中检索信息

我想要检索有关的所有App\MyBundle\Post,并且所有指定comment的所有信息,我的意思是,如果我有一个职位2条评论,我想它返回我到我行,例如:

P.*, 2 as 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' 
    ); 

但我有一个错误:

[Semantical Error] line 0, col 96 near 'Com ON C.id=CONCAT("post_",P.id) WHERE': Error: Identification Variable Comment used in join path expression but was not defined before.

请帮我

感谢萨姆

回答

0

那你怎么做一个留在DQL JOIN不是。请参阅manual

+0

好吧,我知道我不能按照文档左连接'on',但是我没有在邮件实体和评论实体之间的“物理”链接。我拥有的唯一链接是:comment.id = CONCAT('post _',post.id) – Sam 2012-01-17 09:12:26

+0

哦。我懂了。我认为你真的应该有一个物理链接。写一个sql迁移到一个新的表结构,你将获得速度的可用性。 – greg0ire 2012-01-17 09:19:16

+0

你是什么意思?我必须像CONCAT('mytable _',mytable.id)那样有comment_id,因为我想实例化几个实体的注释。所以我不知道我该怎么做... – Sam 2012-01-17 09:41:05