Filtri per Intervallo di Date
Schede di filtro per intervallo di date cumulativo create con where_raw(), più i preset rapidi di intervallo di date della barra di ricerca per le colonne di tipo data/datetime.
Schede di intervallo cumulativo con where_raw()
Nessuno dei consueti raggruppamenti di date relative - "questa settimana", "questo mese", "ultimi 6 mesi" - ha la forma "campo OP valore" che where() può esprimere; CURDATE(), INTERVAL e YEARWEEK() sono funzioni MySQL, non valori letterali associabili. where_raw($condition, $tab = null) è lo strumento adatto a questo scopo - ogni scheda è una propria condizione SQL grezza firmata in modo indipendente.
$xcrud->where_raw('DATE(paymentDate) = CURDATE()', 'Today');
$xcrud->where_raw('DATE(paymentDate) = CURDATE() - INTERVAL 1 DAY', 'Yesterday');
$xcrud->where_raw('YEARWEEK(paymentDate, 1) = YEARWEEK(CURDATE(), 1)', 'This Week');
$xcrud->where_raw(
'YEAR(paymentDate) = YEAR(CURDATE()) AND MONTH(paymentDate) = MONTH(CURDATE())',
'This Month'
);
$xcrud->where_raw('paymentDate >= CURDATE() - INTERVAL 6 MONTH', 'Last 6 Months');
Questi intervalli sono deliberatamente annidati/cumulativi, non una partizione rigida e mutuamente esclusiva - "This Week" è un sottoinsieme di "This Month", che a sua volta è un sottoinsieme di "Last 6 Months", allo stesso modo in cui di solito funziona altrove un filtro "Ultimi 7 giorni / Ultimi 30 giorni / Ultimi 6 mesi". Una partizione rigida sembra più pulita ma presenta un caso limite reale: all'inizio di un mese di calendario, "questo mese ma non nelle ultime due settimane di calendario" può risultare in un intervallo del tutto vuoto. Gli intervalli annidati evitano questo problema e corrispondono a ciò che un visitatore si aspetta realmente cliccando su "This Month" - tutto ciò che appartiene a questo mese, non tutto ciò che appartiene a questo mese tranne quanto è più recente.
Parametri
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
$condition | string | - | Condizione SQL grezza, inserita testualmente (tra parentesi). Solo SQL affidabile, scritto dallo sviluppatore - non costruirla mai a partire dall'input della richiesta. |
$tab | string|null | null | Etichetta della scheda. Da omettere per un filtro di base permanente invece di una scheda commutabile. |
I preset rapidi di intervallo di date della barra di ricerca
Separatamente dalle schede di filtro, la barra di ricerca semplice dispone di una propria comodità lato JS per le colonne di tipo data/datetime. Apri il pannello "Colonne (n)" accanto al campo di ricerca semplice - lo stesso pannello usato per scegliere quali colonne copre la ricerca semplice - e la casella di spunta di ogni colonna data/datetime ha sotto di sé un mini pannello per intervallo rapido: un menu a tendina di preset (Qualsiasi momento / Oggi / Ieri / Questa Settimana / Questo Mese / Quest'Anno / Intervallo personalizzato) più una coppia di date da/a modificabile, popolata da qualunque preset venga scelto ma comunque regolabile in seguito per un affinamento fine.
È una pura comodità lato client per compilare rapidamente un intervallo di date - non serve alcuna chiamata PHP per abilitarla, ogni colonna data/datetime la ottiene automaticamente. Viene tracciata separatamente dalle righe di condizione del pannello di Ricerca Avanzata, ma entrambe vengono combinate nella stessa richiesta di filtro quando la griglia si ricarica, quindi un intervallo di date rapido e una condizione avanzata possono essere attivi contemporaneamente.