私はsymfony 5、doctrine 2およびphp 7.3を持っています
4 つのエンティティ :
- 1 つの Meeting を含む OrderworkMeeting
- 複数の MeetingUser を含む会議、
- 1 人のユーザーと 1 つのミーティングを含む MeetingUser (ミーティングとユーザー間の多対多の関係の場合)
- ユーザー
OrderworkMeeting リポジトリで特定の 1 人のユーザーとすべての OrederworkMeeting を取得するように要求すると、教義は 1 人のユーザーのみを返し、同じ会議で他のユーザーを表示することは不可能です ???.
この前に特定のユーザーなしでリクエストを複製した場合、それは機能するため、バグだと思います!
コードは次のとおりです。
$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「マージ」フィールドを読みましたが、これが結果をどのように、そしてなぜ変えるのですか? それはフィールド名から来ましたか?
助けてくれてどうもありがとう