我有一个类似的问题和数据库结构:
原则2 与条件的关联映射
但是,我需要具有批准评论的文章集合:
如何做没有N + 1的协商映射?
$articles = $repository->findAllArticlesWithApprovedComments();
Foreach($articles as $article){
$article->getTitle();
foreach($article->getAprovedComments() as $comment){
$comment->getText();
}
}
标准有效,如果我使用延迟加载,但它的N + 1问题。如果我使用预先加载(加入并添加选择) - 条件不起作用。
如果我使用此代码:
$articles = $em->createQueryBuilder()
->from(Article::class,'article')
->leftJoin('article.comments','comments')
->addSelect('article')
->addSelect('comments')
->andWhere('comments.approved= :ap ')
->setParameter('ap',true)
->getQuery()->getResult();
我会收到有批准评论的文章,但如果文章有0条评论,它将不会落入文章集合。
如何获取具有已批准评论的文章,但如果文章中没有评论,则文章仍保留在集合中?
示例:我在 DB 中有:
Article1: [approvedComment, nonAprovedComment]
Article2: [nonAprovedComment]
Article3: [approvedComment]
我需要结果(带有原则,代码中的非过滤器):
Article1: [approvedComment]
Article2: []
Article3: [approvedComment]
跃然一笑
万千封印
随时随地看视频慕课网APP