我有 symfony 5、教义 2 和 php 7.3
四个实体:
- 包含一个会议的 OrderworkMeeting
- 包含多个 MeetingUser 的会议,
- 包含一个用户和一个会议的会议用户(会议和用户之间的多对多关系)
- 用户
当我在 OrderworkMeeting 存储库中发出请求以获取与一个特定用户的所有 OrederworkMeeting 时,学说只返回一个用户,不可能在同一个会议中查看其他用户???。
我认为这是错误,因为如果我在此之前复制请求但没有特定用户,它就可以工作!
这是代码:
$list = $repo_om->getByUser([15]);
foreach ($list as $oo) {
var_dump(count($oo->getMeeting()->getUsers()));
}
返回 1
$listForNothing = $repo_om->getByUser();
$list = $repo_om->getByUser([15]);
foreach ($list as $oo) {
var_dump(count($oo->getMeeting()->getUsers()));
}
返回 2
在我的 OrderworkMeetingrepository 中:
public function getByUser($userId=0){
$qb = $this->createQueryBuilder('om');
$qb ->leftJoin('om.meeting', 'm')
->addSelect('m')
->leftJoin('m.users', 'mu')
->addSelect('mu')
->leftJoin('mu.user', 'u')
->addSelect('u');
$this->setQbListLink($qb);
$this->addQbOtherListLink($qb);
if($userId){
$or = $qb->expr()->orX();
$or->add('u.id IN (:id)');
$qb->setParameter('id', $userId);
$qb->andWhere($or);
}
->orderBy('m.date', 'DESC');
return $qb->getQuery()->getResult();
}
我不明白的附加是什么?欢迎您的帮助,我认为我是傻瓜:)
提前致谢
编辑:
在我的项目中进行其他测试后,我看到我的学说查询已经爆炸:
使用 addSelect() : 16 个查询,没有 : 84 个查询。
所以我真的需要 addSelect 来减少查询!
我不明白为什么当我删除 addSelect 时这会解决我的问题?我读到了查询的 addSelect “合并”字段,但是这如何以及为什么会改变我的结果?那是来自字段名称吗?
非常感谢你的帮助