1

我对populateRelation有一个问题,让我们解释一下,我们有一些文章,这篇文章可以有标签,所以我们做另一个表 article_tag,这在推进中做 ArticleTag 对象,让我们找到所有文章

$Articles = ArticleQuery::create()->find();

好的,所以我们现在拥有所有文章,现在我们想要为每篇文章拥有所有这些标签,所以我们开始:

$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 个。

我在哪里做错了?

4

1 回答 1

3

我在这里给出了一个关于递归填充相关对象的答案。

您只需要在查询中明确joinWith

$articles = ArticleQuery::create()->joinWith('Article.ArticleTag')->find();

// this won't perform others queries
// not sure about getArticleTags or getArticleTag
foreach($articles->getArticleTags() as $ArticleTag) { }
于 2012-05-31T11:52:28.487 回答