我是Symfony 2和Doctrine 2的初学者。我有两个模型Blog
post和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的初学者。我通常使用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] 删除。
我来说两句