只显示今天的新闻 - Silverstripe
Only show todays news - Silverstripe
您好 Silverstripe 专家!
我做了教程"extending a basic site"
(http://doc.silverstripe.org/en/tutorials/extending_a_basic_site)
到目前为止一切都很好。
我做这个是为了在主页上显示最新消息:
在 HomePage.php:
// ...
public function LatestNews($num=5) {
$holder = ArticleHolder::get()->First();
return ($holder) ? ArticlePage::get()->filter('ParentID',
$holder->ID)->sort('Date DESC')->limit($num) : false;
}
这在 HomePage.ss 中:
// ...
public function LatestNews($num=5) {
$holder = ArticleHolder::get()->First();
return ($holder) ? ArticlePage::get()->filter('ParentID',
$holder->ID)->sort('Date DESC')->limit($num) : false;
}
效果很好!
现在我的问题是:我所有的新闻都有日期字段。是否可以只显示
主页上当前日期的新闻?
我试过了,但这行不通(服务器错误)(Datum
是我的新闻日期):
public function LatestNews($num) {
$holder = ArticleHolder::get()->First();
return ($holder) ? ArticlePage::get()->filter('ParentID', "datum == CURDATE()",
$holder->ID)->sort('Date DESC')->limit($num) : false;
}
非常感谢您的帮助!
filter()
需要两个值(列和值)或要过滤的键值对数组。所以如果你想过滤不止一件事你需要一个数组作为参数:
$today = date('Y-m-d');
$todaysNews = ArticlePage::get()->filter(array(
'ParentID' => $holder->ID,
'datum' => $today
));
这将 return DataList 您可以像在示例中那样进行排序和限制。
另见文档:
- Data Model and ORM 总体概览
- Search filters 如何筛选 "greater than" 等等...
编辑:
因此,您的控制器中的方法可能如下所示:
public function getTodaysNews($num=5) {
$holder = ArticleHolder::get()->First();
$today = date('Y-m-d');
return $holder
? ArticlePage::get()->filter(array(
'ParentID' => $holder->ID,
'datum' => $today
))->sort('Date DESC')->limit($num)
: false;
}
您好 Silverstripe 专家!
我做了教程"extending a basic site" (http://doc.silverstripe.org/en/tutorials/extending_a_basic_site)
到目前为止一切都很好。
我做这个是为了在主页上显示最新消息: 在 HomePage.php:
// ...
public function LatestNews($num=5) {
$holder = ArticleHolder::get()->First();
return ($holder) ? ArticlePage::get()->filter('ParentID',
$holder->ID)->sort('Date DESC')->limit($num) : false;
}
这在 HomePage.ss 中:
// ...
public function LatestNews($num=5) {
$holder = ArticleHolder::get()->First();
return ($holder) ? ArticlePage::get()->filter('ParentID',
$holder->ID)->sort('Date DESC')->limit($num) : false;
}
效果很好!
现在我的问题是:我所有的新闻都有日期字段。是否可以只显示 主页上当前日期的新闻?
我试过了,但这行不通(服务器错误)(Datum
是我的新闻日期):
public function LatestNews($num) {
$holder = ArticleHolder::get()->First();
return ($holder) ? ArticlePage::get()->filter('ParentID', "datum == CURDATE()",
$holder->ID)->sort('Date DESC')->limit($num) : false;
}
非常感谢您的帮助!
filter()
需要两个值(列和值)或要过滤的键值对数组。所以如果你想过滤不止一件事你需要一个数组作为参数:
$today = date('Y-m-d');
$todaysNews = ArticlePage::get()->filter(array(
'ParentID' => $holder->ID,
'datum' => $today
));
这将 return DataList 您可以像在示例中那样进行排序和限制。
另见文档:
- Data Model and ORM 总体概览
- Search filters 如何筛选 "greater than" 等等...
编辑: 因此,您的控制器中的方法可能如下所示:
public function getTodaysNews($num=5) {
$holder = ArticleHolder::get()->First();
$today = date('Y-m-d');
return $holder
? ArticlePage::get()->filter(array(
'ParentID' => $holder->ID,
'datum' => $today
))->sort('Date DESC')->limit($num)
: false;
}