Tôi đang cố gắng thay đổi bộ lọc ngày được hiển thị trong chế độ xem mà tôi đã tạo bằng cách sử dụng api tìm kiếm solr. Tôi nhận thấy rằng bộ lọc ngày kết thúc không hoạt động trừ khi tôi thêm một ngày vào ngày kết thúc. vì vậy, ví dụ nếu tôi có các nút sau:
Tiêu đề |
ngày bắt đầu |
ngày cuối |
một |
01/01/2020 |
01/01/2021 |
b |
02/01/2020 |
02/01/2022 |
c |
03/01/2020 |
03/01/2023 |
và tôi sử dụng bộ lọc bị lộ để trả về ngày kết thúc là 01/02/2022 với toán tử nhỏ hơn hoặc bằng, nó sẽ không trả về các nút a và b trừ khi tôi thay đổi ngày kết thúc thành 02/02/2022.
Tôi gặp khó khăn khi cố gắng tìm ra cách sửa đổi hook_views_query_alter() để thêm thời gian (tôi cho rằng đó là điều sai.).
function my_module_views_query_alter(ViewExecutable $view, QueryPluginBase $query) {
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', '<=');
}
}
CHỈNH SỬA: Điều này gần như hoạt động, miễn là không có đầu vào nào trong bộ lọc ngày kết thúc được hiển thị, tuy nhiên tôi không thể có điều đó vì bộ lọc dựa vào đầu vào của người dùng:
function my_module_views_query_alter(ViewExecutable $view, QueryPluginBase $query) {
if ($view->id() == 'my_solr_search' && !empty($view->exposed_raw_input['field_end_date'])) {
// Mã cứng ngày kết thúc vì không có đầu vào.
$end_date = DateTime::createFromFormat('m/d/Y H:i:s', $view->exposed_raw_input['field_end_date'] . ' 23:59:59');
$group_id = $query->setWhereGroup('AND', NULL, 'where');
$query->addWhere($group_id, 'field_end_date', $end_date->format("U"), '<=');
}
}