Фильтрация в диапазоне дат

Я пытаюсь создать пользовательскую форму поиска и отфильтровать результаты в некоторый диапазон дат:

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

1

Решение

Я не знаю ни одного фильтра диапазона, но в соответствии с документация Вы можете использовать что-то вроде:

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

Я сделал несколько предположений с кодом выше:

  • DateUpload поле даты, по которому вы пытаетесь фильтровать
  • Формат даты, указанный в форме, уже подходит для базы данных, т.е. гггг-мм-дд (например, 2017-09-05)

Возможно, вам придется изменить его соответствующим образом.

Надеюсь, это то, что вы ищете 🙂

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector