过滤日期范围

时间:2017-09-05 09:23:26

标签: php silverstripe

我尝试构建自定义搜索表单并在某些日期范围内过滤结果:

       $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?
       }

    }

}

我可以在这里使用像InsideRangeFilter这样的东西吗?

1 个答案:

答案 0 :(得分:3)

我不知道任何范围过滤器,但根据the documentation,您可以使用以下内容:

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

我用上面的代码做了一些假设:

  • DateUpload是您尝试过滤的日期字段。
  • 表单提供的日期格式已经是数据库友好的,即yyyy-mm-dd(例如2017-09-05)

您可能需要相应地进行编辑。

希望这就是你要找的东西:)