2017-09-05 149 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