在日期范围内过滤

Filtering in date range

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

       $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 之类的东西吗?

我不知道任何范围过滤器,但根据 the documentation 你可以使用类似的东西:

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

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

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

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

希望这就是您要找的:)