【发布时间】:2026-02-17 11:20:06
【问题描述】:
我在实体存储库中有一个带有 ManyToMany 其他实体的查询:会议有很多用户
这是我的qb:
$userIds = [2];
$qb = $this->createQueryBuilder('m')
->leftJoin('m.users', 'mu')
->leftJoin('mu.user', 'u')
->where('u.id IN (:ids)')
->setParameter('id', $userIds);
这很好用,如果我与两个用户开会,并且 id=2 的用户在,查询会给出两个用户的完整结果。
我的问题是当我显示用户信息时我有很多数据库查询 (84),所以我像这样使用 addSelect :
$userIds = [2];
$qb = $this->createQueryBuilder('m')
->leftJoin('m.users', 'mu')
->addSelect('mu')
->leftJoin('mu.user', 'u')
->addSelect('u')
->where('u.id IN (:ids)')
->setParameter('id', $userIds);
太棒了!我现在只有 16 个显示信息查询。 但我的查询只返回在我与两个用户的会议中 id=2 的用户???
如果我只保留 addSelect('mu'),我也会遇到同样的问题。 我认为 addSelect() 不会在不是我搜索的用户中执行。
如何使用 addSelect() 检索整个结果以减少查询?
感谢您的帮助
【问题讨论】:
标签: symfony repository left-join query-builder doctrine-query