2017-09-05 173 views
1

我嘗試建立自定義的搜索表單和篩選結果在一定範圍內的日期:過濾日期範圍

 $form = BootstrapForm::create (
      $this, 
      'LetterSearchForm', 
      FieldList::create (
      DateField::create('Sent_After','Sent After'), 
      DateField::create('Sent_Befor','Sent Before') 
      ... 
      ), 
      ... 
     ); 



    public function index (SS_HTTPRequest $request) 
    { 
     $letters = Letter::get()->sort('DateUpload'); 

     if($search = $request->getVar('Sender')) { 
     $letters = $letters->filter(array(
      'Sender:PartialMatch' => $search 
     )); 
     } 
     if ($search1 = $request->getVar('Sent_After') && $search2 = $request->getVar('Sent_Befor')) 
     { 
       What must be here? 
     } 

    } 

} 

我可以在這裏使用類似WithinRangeFilter?

回答

3

我不知道任何範圍過濾器,但根據the documentation你可以使用類似:

$dateFilteredList = $letters->filter(array(
    'DateUpload:LessThanOrEqual' => $search2, // Sent_Befor 
    'DateUpload:GreaterThanOrEqual' => $search1 // Sent_After 
)); 

我做了上面的代碼的幾個假設:

  • DateUpload是您要過濾的日期字段。
  • 的形式被提供的日期格式已經是數據庫友好,即YYYY-MM-DD(例如,2017年9月5日)

您可能需要相應地對其進行編輯。

希望這就是你要找的東西:)

+0

它的工作原理!謝謝利奧! – alex