Bối cảnh: Tôi cần tạo một số bảng trong Chế độ xem hiển thị các thực thể có trạng thái nhất định (dựa trên trường phân loại) trong x số ngày làm việc. Tôi đã thiết lập các trường và quy tắc để mỗi khi thực thể thay đổi trạng thái, trường ngày giờ sẽ được điền ngày và giờ hiện tại.
Tiếp theo, tôi đã tạo một mô-đun tùy chỉnh để thêm các trường tùy chỉnh vào Chế độ xem hiển thị số ngày làm việc đã trôi qua kể từ ngày và giờ. Tôi nghĩ rằng tất cả đều thú vị cho đến khi tôi nhận ra rằng mình không thể lọc trên các trường tùy chỉnh này (vì những lý do mà tôi biết).
Vì vậy, tôi đã quay lại một phần bảng vẽ để làm lại khái niệm này, nhưng dưới dạng bộ lọc tùy chỉnh thay vì trường... nhưng tôi gặp khó khăn khi tìm cách tạo bộ lọc tùy chỉnh này trong mô-đun của mình. Tôi hình dung rằng tôi có thể sử dụng lại tập lệnh php lấy trường ngày và ngày hiện tại để tính số ngày làm việc đã trôi qua.
Ngoại trừ yêu cầu về ngày làm việc, tôi gần như có thể làm những gì mình muốn ngay lập tức bằng cách sử dụng bộ lọc Ngày của Chế độ xem với toán tử "nhỏ hơn hoặc bằng" và giá trị bù trừ (vì vậy tôi chỉ muốn hiển thị các thực thể cũ hơn hơn hai ngày, vì vậy tôi đã sử dụng "-2 ngày" cho giá trị).
Chỉnh sửa: Tôi nghĩ rằng tôi đã tìm ra nó.
Đây là những gì tôi nghĩ sẽ là quy trình tạo truy vấn SQL sử dụng ngày làm việc thay vì ngày theo lịch (các biến tôi tạo là dành cho ví dụ này chứ không phải những gì tôi sẽ sử dụng trong mã theo nghĩa đen):
Nhận ngày và giờ hiện tại (ví dụ này, chúng tôi sẽ gọi đó là $date) và đưa nó vào một tập lệnh PHP để đưa ra ngày và giờ sẽ là ngày nào của 2 ngày làm việc trước. Đối với ví dụ này, tôi sẽ gọi đó là $oldDate
Nếu ngày hôm nay là 2/7/22, thì đó sẽ là 2/3/22. Nếu ngày hôm nay là 10/2/22, thì đó sẽ là 8/2/22.
Trừ $oldDate khỏi $date. Chúng tôi sẽ gọi giá trị này là $days.
Nếu ngày hôm nay là 2/7/22, thì đó sẽ là 4. Nếu ngày hôm nay là 22/10/22, thì đó sẽ là 2.
Nhân $days với 86400, là số giây trong 1 ngày.
Nếu ngày hôm nay là 2/7/22, thì đó sẽ là 345.600. Nếu ngày hôm nay là 10/2/22, thì đó sẽ là 172800. Chúng tôi sẽ gọi giá trị này là $giây.
Sau đó, truy vấn SQL của chúng tôi sẽ là node_field_data.created <= $unixDate-$seconds