我需要修改此对象以仅返回过去100天的条目,但我们没有每天的条目,因此我们需要更复杂的东西来过滤掉额外的日期。
当前对象:
$obj = YearToDate::get()->sort('ID', 'DESC')->limit(100);
是否可以按对象定义中的创建日期进行过滤?或者我需要创建一个函数来处理过滤?
这是班级:
class YearToDate extends DataObject {
// Create DB fields
private static $db = array(
'Inches' => 'Text'
);
// Assign Weather to Weather
private static $belongs_many_many = array(
'Weather' => 'Weather'
);
// Summary fields to show in gridfield
private static $summary_fields = array(
'Created' => 'Date',
'Inches' => 'Inches'
);
public function getCMSFields() {
$fields = parent::getCMSFields();
// Remove Fields
$fields->removeByName('Weather');
// Add DB fields to CMS tabs
$fields->addFieldToTab('Root.Main', new TextField('Inches','Inches'));
return $fields;
}
// Required Fields
function getCMSValidator() {
return new RequiredFields(array('Inches'));
}
}
答案 0 :(得分:2)
如果您使用MySQL作为基础RDBMS,则可以使用MySQL date functions查询过去100天的条目。
这样的事情应该有效:
$list = YearToDate::get()
->sort('Created', 'DESC')
->where('"Created" >= DATE_SUB(NOW(), INTERVAL 100 DAY)')
这样做是从当前时间(NOW()
)删除100天并将其与Created
日期进行比较。如果Created
更大,那么它不到100天。
这将严格过滤过去100天,因此如果您每天没有参赛作品或每天多次参赛,您可能会得到少于或超过100个结果。