我有一个问题 populateRelation ,让我们解释一下,我们有一些文章,这篇文章可以有标签,所以我们做另一个表article_tag,这个做ArticleTag对象的推进,让我们找到所有制品
$Articles = ArticleQuery::create()->find();
okey所以我们现在有了所有文章,现在我们想要为每篇文章提供所有这些标签,所以我们走了:
$Articles->populateRelation('ArticleTag');
然后是我们的一些观点:
foreach($Articles as $Article) {
// some stuff
foreach($Article->getArticleTags() as $ArticleTag) { // this should not do query!
// some additional stuff
}
}
当我在db中有1 200篇文章时, populateRelation 查询最多为600,但文章和文章标签应该只有2。
我错在哪里?
答案 0 :(得分:3)
我将an answer here放在递归填充相关对象上。
您的查询中只需要explicit joinWith
the table:
$articles = ArticleQuery::create()->joinWith('Article.ArticleTag')->find();
// this won't perform others queries
// not sure about getArticleTags or getArticleTag
foreach($articles->getArticleTags() as $ArticleTag) { }