我正在使用Doctrine2和Symfony2。我的UserRepository中有一个查询,如下所示:
$qb = $this->createQueryBuilder('u')
->addSelect('s', 'p', 'a', 'fp', 'ea', 'c')
->leftJoin('u.subscription', 's')
->leftJoin('s.plan', 'p')
->leftJoin('u.applications', 'a')
->leftJoin('u.facebook_pages', 'fp')
->leftJoin('u.editable_apps', 'ea')
->leftJoin('u.coupons_redeemed', 'c')
->where('u = :user')
->setParameter('user', $user)
;
return $qb->getQuery()->getSingleResult();
根据Symfony分析器,这一个查询大概是 63 ms
。当我注释掉a
和fp
左边的联接,而是获取用户对象并执行$user->getFacebookPages()
和$user->getApplications()
时,我有三个查询,其中包含 {{ 1}}
如何使用左连接进行查询与延迟加载相关实体一样快?