如何在 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');
}
我有这个功能:
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');
}