尝试使用Doctrine 2连接两个简单的表

拉斐尔·阿德尔(Rafael Adel)

我是Symfony 2和Doctrine 2的初学者。我有两个模型Blogpost和Comment它们通过blog_idFK相互关联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的初学者。我通常使用Query Builder,但是我不知道如何使用它进行联接。因此,在DQL中对其进行了尝试,也无法解决。

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

[语法错误]行0,列80:错误:预期的字符串结尾,出现了“ JOIN”

我仅想知道的是,如何使用查询生成器和DQL编写JOIN语句?不幸的是,知道该文档并没有帮助。

外套

JOIN使用DQL的A是通过引用实体之间的关系来完成的,它只需要采用一种方法。我的意思是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();

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章