ฉันกำลังพยายามเปลี่ยนตัวกรองวันที่เปิดเผยในมุมมองที่ฉันสร้างขึ้นซึ่งใช้ Solr Search API ฉันสังเกตเห็นว่าตัวกรองวันที่สิ้นสุดไม่ทำงานเว้นแต่ฉันจะเพิ่มวันไปยังวันที่สิ้นสุด ตัวอย่างเช่น ถ้าฉันมีโหนดต่อไปนี้:
ชื่อ |
วันที่เริ่มต้น |
วันที่สิ้นสุด |
ก |
01/01/2020 |
01/01/2021 |
ข |
02/01/2020 |
02/01/2022 |
ค |
03/01/2020 |
03/01/2023 |
และฉันใช้ตัวกรองที่เปิดเผยเพื่อส่งคืนวันที่สิ้นสุดของ 02/01/2022 ด้วยตัวดำเนินการน้อยกว่าหรือเท่ากับมันจะไม่ส่งคืนโหนด a และ b เว้นแต่ฉันจะเปลี่ยนวันที่สิ้นสุดเป็น 02/02/2022
ฉันติดอยู่กับการพยายามหาวิธีแก้ไข hook_views_query_alter() เพื่อเพิ่มเวลา (ฉันคิดว่านั่นคือสิ่งที่ผิด)
ฟังก์ชัน my_module_views_query_alter (ViewExecutable $view, QueryPluginBase $query) {
ถ้า ($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 $query) {
ถ้า ($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('AND', NULL, 'where');
$query->addWhere($group_id, 'field_end_date', $end_date->format("U"), '<=');
}
}