Încerc să modific un filtru de dată expusă într-o vizualizare pe care am creat-o care folosește API-ul de căutare solr. Am observat că filtrul pentru data de încheiere nu funcționează decât dacă adaug o zi la data de încheiere. deci, de exemplu, dacă am următoarele noduri:
titlu |
data de început |
Data de încheiere |
A |
01/01/2020 |
01/01/2021 |
b |
02/01/2020 |
02/01/2022 |
c |
03/01/2020 |
03/01/2023 |
și folosesc un filtru expus pentru a returna data de sfârșit de 02/01/2022 cu un operator mai mic sau egal, nu va returna nodurile a și b decât dacă schimb data de sfârșit la 02/02/2022.
Sunt blocat să încerc să-mi dau seama cum să modific hook_views_query_alter() pentru a adăuga o oră (presupun că asta este greșit.).
function my_module_views_query_alter(ViewExecutable $view, QueryPluginBase $interogare) {
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', '<=');
}
}
EDITARE: Acest lucru aproape funcționează, atâta timp cât nu există nicio intrare în filtrul expus pentru data de încheiere, totuși nu pot avea asta, deoarece filtrul se bazează pe intrarea utilizatorului:
function my_module_views_query_alter(ViewExecutable $view, QueryPluginBase $interogare) {
if ($view->id() == 'my_solr_search' && !empty($view->exposed_raw_input['field_end_date'])) {
// Cod hard data de încheiere, deoarece nu există nicio intrare.
$end_date = DateTime::createFromFormat('m/d/Y H:i:s', $view->exposed_raw_input['field_end_date'] . ' 23:59:59');
$group_id = $query->setWhereGroup('ȘI', NULL, 'unde');
$query->addWhere($group_id, 'field_end_date', $end_date->format("U"), '<=');
}
}