如何在 Silverstripe 中排序和过滤 children

How to sort and filter children in Silverstripe

我有这个功能:

public function LatestArticles() {
    return $this->Children()
        ->filter('PublicationDate:LessThanOrEqual', SS_Datetime::now())
        ->sort('PublicationDate','desc');
}

它根本没有输出任何东西。如果我将其切换为:

public function LatestArticles() {
    return ArticlePage::get()
        ->filter('PublicationDate:LessThanOrEqual', SS_Datetime::now())
        ->sort('PublicationDate','desc');
}

它输出我的 ArticlePages,但(显然)包括站点范围内的所有 ArticlePages,而不仅仅是 Children ArticlePages。

如果我将代码更改为:

public function LatestArticles() {
    return $this->Children()
        ->sort('PublicationDate','desc');
}

输出我所有的 children ArticlePages,但包括发布日期晚于今天的文章。

我觉得我可能没有正确使用过滤器功能。我哪里错了?

我在另一个网站上交叉发布了这个问题并得到了有效的答案。以下是对所需代码的编辑。

public function LatestArticles() {
    return ArticlePage::get()
        ->filter(array(
            'ParentID' => $this->ID,
            'PublicationDate:LessThanOrEqual' => SS_Datetime::now()
        ))
        ->sort('PublicationDate','desc');
}