【发布时间】:2018-07-02 06:41:07
【问题描述】:
如何通过主要实体而不是子实体来限制结果?
如果我这样做:
$queryBuilder = $em->createQueryBuilder();
$queryBuilder->select('n, c');
$queryBuilder->from('AppBundle:News', 'n');
$queryBuilder->leftJoin('n.comments', 'c');
$queryBuilder->setMaxResults(3);
$results = $queryBuilder->getQuery()->getResult();
例如,第一个新闻有 3 个 cmets,然后结果只返回一个记录新闻。如果我没有 cmets 或者如果我删除了 leftJoin,那么它运行良好。
【问题讨论】:
-
在查询生成器中,您不能或删除 cmets 上的左连接并延迟加载您的 cmets 数据,但这会产生 N+1 查询问题
-
误解了关于我的第一个重复标志的问题,但重复的 stackoverflow.com/questions/5620771/… 仍然提供了解决方案。
标签: php symfony doctrine symfony3.x