2016-12-02 175 views
0

我需要修改此對象以僅返回過去100天的條目,但我們沒有每天的條目,所以我們需要更復雜的東西來過濾出額外的日期。按日期範圍過濾MySQL返回

當前對象:

$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')); 
} 

} 
+1

請添加您正在使用的數據庫庫(ORM /查詢生成器)。 –

+1

如果'YearToDate'是一個類,你必須發佈代碼。 –

+0

我們在這裏是否缺少ORM? – WillardSolutions

回答

2

如果你使用MySQL作爲底層的RDBMS,你可以使用MySQL date functions從過去100天內查詢條目。

像這樣的東西應該工作:

$list = YearToDate::get() 
    ->sort('Created', 'DESC') 
    ->where('"Created" >= DATE_SUB(NOW(), INTERVAL 100 DAY)') 

那麼這個呢,是從當前時間(NOW())刪除百天和比較它Created日期。如果Created較大,則不到100天。

這將嚴格篩選過去100天,因此如果您每天沒有輸入或每天輸入多個條目,則可能會得到少於或超過100個結果。