SilverStripe ORM where关系子句及其数量

时间:2019-06-19 18:33:32

标签: silverstripe silverstripe-4

我正在从事SilverStripe项目。现在,我正在查询数据。我想做的是让所有记录根据其关系计数在where子句中运行。

请查看此查询

NewsPage::get();

上面的查询将获取所有NewsPage记录。 NewsPage有很多博客。因此,他们之间存在一对多的关系。因此,如果要在新闻页面上获取所有博客,则必须这样做。

$newPage->BlogPosts()

现在,我想做的是,我要获取所有具有多个博客文章的新闻页面。

类似这样的任意代码

$newPage->where('BlogPosts.Count', '>', 1)->get();

那我该如何实现呢?

1 个答案:

答案 0 :(得分:4)

在SilverStripe 4中,我们可以按以下方式对$has_many$many_many关系计数进行过滤:

NewsPage::get()->filter([
    'BlogPosts.Count():GreaterThan' => 1
]);

要使其正常工作,NewsPage必须与称为$has_many的{​​{1}}有$many_manyBlogPost关系。