0

我是 Symfony 2 和 Doctrine 2 的初学者。我有两个模型一个Blog帖子和Comment. blog_id它们通过表内的 FK相互关联comment

我只想创建一个简单的方法,它需要一个博客 ID,检索该博客和相关评论。而不是在延迟加载相关评论时进行另一个查询。

这是我尝试过的:

<?php

namespace Blogger\BlogBundle\Entity\Repository;

use Doctrine\ORM\EntityRepository;

class BlogRepository extends EntityRepository
{

    public function getBlogWithComments($id)
    {
        $query = $this->getEntityManager()->createQuery('
                    SELECT b, c
                    FROM BloggerBlogBundle:Blog b
                    WHERE b.id = :id
                    JOIN b.id c
                    WHERE b.id = c.blog');
        $query->setParameter("id", $id);
        return $query->getResult();

    }
}

我真的是 Doctrine 2 的初学者。我通常使用查询生成器,但我不知道如何使用它进行连接。所以在DQL中尝试过,也无法弄清楚。

每当我尝试调用getBlogWithComments方法时,它都会给我这个语法错误:

[语法错误] 第 0 行,第 80 列:错误:预期的字符串结尾,得到 'JOIN'

我想知道的是,如何使用 Query Builder 和 DQL编写JOIN语句?不幸的是,知道文档并没有太大帮助。

4

1 回答 1

1

A JOINwith DQL 是通过引用实体之间的关系来完成的,它只需要走一种方式。我的意思是b.comment c只需要,不需要引用c.blog.

public function getBlogWithComments($id)
{
    return $this->getEntityManager()
           ->createQuery('
                SELECT b, c
                FROM BloggerBlogBundle:Blog b
                JOIN b.comment c
                WHERE b.id = :id
            ')
            ->setParameter("id", $id)
            ->getResult();

}
于 2013-09-28T04:14:10.713 回答