Я пытаюсь изменить открытый фильтр даты в созданном мной представлении, которое использует solr search api. Я заметил, что фильтр даты окончания не работает, если я не добавляю день к дате окончания. так, например, если у меня есть следующие узлы:
заглавие |
Дата начала |
Дата окончания |
а |
01/01/2020 |
01/01/2021 |
б |
02/01/2020 |
02/01/2022 |
с |
03/01/2020 |
03/01/2023 |
и я использую открытый фильтр, чтобы вернуть дату окончания 01.02.2022 с оператором меньше или равно, он не будет возвращать узлы a и b, если я не изменю дату окончания на 02.02.2022.
Я застрял, пытаясь понять, как изменить hook_views_query_alter(), чтобы добавить время (я предполагаю, что это неправильно).
функция my_module_views_query_alter (ViewExecutable $ view, QueryPluginBase $ запрос) {
if ($view->id() == 'my_solr_search' && !empty($view->exposed_raw_input['field_end_date'])) {
$query->addWhere(0, 'field_end_date', $view->exposed_raw_input['field_end_date']. '23:59', '<=');
}
}
РЕДАКТИРОВАТЬ: Это почти работает, если в открытом фильтре конечной даты нет ввода, однако я не могу этого сделать, поскольку фильтр зависит от пользовательского ввода:
функция my_module_views_query_alter (ViewExecutable $ view, QueryPluginBase $ запрос) {
if ($view->id() == 'my_solr_search' && !empty($view->exposed_raw_input['field_end_date'])) {
// Жестко запрограммировать дату окончания, так как входных данных нет.
$end_date = DateTime::createFromFormat('m/d/Y H:i:s', $view->exposed_raw_input['field_end_date']. ' 23:59:59');
$group_id = $query->setWhereGroup('И', NULL, 'где');
$query->addWhere($group_id, 'field_end_date', $end_date->format("U"), '<=');
}
}