SilverStripe ORM where 关系子句及其计数

SilverStripe ORM where clause on relations and its count

我正在从事 SilverStripe 项目。现在我正在查询数据。我想要做的是获取所有记录 运行 where 子句关于其关系的计数。

下面的查询将获取所有 NewsPage 记录。 NewsPage 有很多博客。所以,他们是一对多的关系:

NewsPage::get();

所以如果我想获取新闻页面上的所有博客,我必须这样做:

$newPage->BlogPosts()

现在,我要做的是尝试获取所有拥有多个博客的新闻页面 post:

类似这样的任意代码

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

我怎样才能做到这一点?

在 SilverStripe 4 中,我们可以过滤 $has_many$many_many 关系计数,如下所示:

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

要使其正常工作,NewsPage 必须与 BlogPost 具有 $has_many$many_many 关系,称为 BlogPosts