我的代码:
$entityManager = $this->getDoctrine()->getEntityManager();
$result = $entityManager->createQueryBuilder()
->select('c')
->from('BlogHomepageBundle:Comment', 'c')
->innerJoin('BlogHomepageBundle:Post', 'po', 'WITH', 'c.postFk = po.postId')
->getQuery()->getResult();
foreach ($result as $c) {
//additional sql query
echo $c->getPostFk()->getName();
}
它工作得很好,但是当我尝试获取 postFk (帖子与评论一对多关系相关)时,我得到了对 db 的额外查询(延迟加载)。我可以避免这种情况以在一个 DQL 查询中获取所有数据吗?简单的执行sql查询
select c.*, p.* from comment as c inner join post as p on c.post_fk = p.post_id
我想使用 DQL(不是原始 sql)。
编辑 我想拥有对象并像在 foreach 循环中一样访问它们/而不是标量数据。