我正在从事SilverStripe项目。现在,我正在查询数据。我想做的是让所有记录根据其关系计数在where子句中运行。
请查看此查询
NewsPage::get();
上面的查询将获取所有NewsPage记录。 NewsPage有很多博客。因此,他们之间存在一对多的关系。因此,如果要在新闻页面上获取所有博客,则必须这样做。
$newPage->BlogPosts()
现在,我想做的是,我要获取所有具有多个博客文章的新闻页面。
类似这样的任意代码
$newPage->where('BlogPosts.Count', '>', 1)->get();
那我该如何实现呢?
答案 0 :(得分:4)
在SilverStripe 4中,我们可以按以下方式对$has_many
或$many_many
关系计数进行过滤:
NewsPage::get()->filter([
'BlogPosts.Count():GreaterThan' => 1
]);
要使其正常工作,NewsPage
必须与称为$has_many
的{{1}}有$many_many
或BlogPost
关系。