0

我有 symfony 5、教义 2 和 php 7.3

四个实体:

  1. 包含一个会议的 OrderworkMeeting
  2. 包含多个 MeetingUser 的会议,
  3. 包含一个用户和一个会议的会议用户(会议和用户之间的多对多关系)
  4. 用户

当我在 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 “合并”字段,但是这如何以及为什么会改变我的结果?那是来自字段名称吗?

非常感谢你的帮助

4

0 回答 0