/

Filtros de rango de fechas

Pestañas de filtro de rango de fechas acumulativas construidas con where_raw(), además de los propios ajustes rápidos de rango de fechas de la barra de búsqueda para columnas de fecha/fecha-hora.

Pestañas de rango acumulativas con where_raw()

Ninguno de los intervalos relativos habituales - "esta semana", "este mes", "últimos 6 meses" - tiene la forma "campo OP valor" que where() puede expresar; CURDATE(), INTERVAL y YEARWEEK() son funciones de MySQL, no literales vinculables. where_raw($condition, $tab = null) es la herramienta para esto - cada pestaña es su propia condición SQL sin procesar, firmada de forma independiente.

$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');

Esto es deliberadamente anidado/acumulativo, no una partición estrictamente mutuamente excluyente - "Esta semana" es un subconjunto de "Este mes", que a su vez es un subconjunto de "Últimos 6 meses", de la misma forma en que suele funcionar en otros sitios un filtro de "Últimos 7 días / Últimos 30 días / Últimos 6 meses". Una partición estricta suena más limpia pero tiene un caso límite real: a principios de un mes natural, "este mes pero no en las dos últimas semanas naturales" puede ser directamente un rango vacío. Los rangos anidados evitan eso y coinciden con lo que un visitante realmente espera al hacer clic en "Este mes" - todo lo de este mes, no todo lo de este mes excepto lo más reciente.

Parámetros

ParámetroTipoPredeterminadoDescripción
$conditionstring-Condición SQL sin procesar, insertada literalmente (entre paréntesis). Solo SQL de confianza, escrito por el desarrollador - nunca la construyas a partir de la entrada de la petición.
$tabstring|nullnullEtiqueta de la pestaña. Se omite para un filtro base permanente en lugar de una pestaña conmutable.

Los propios ajustes rápidos de rango de fechas de la barra de búsqueda

Separadamente de las pestañas de filtro, la barra de búsqueda básica tiene su propia comodidad del lado de JS para columnas de fecha/fecha-hora. Abre el panel "Columns (n)" junto al cuadro de búsqueda simple - el mismo panel que se usa para elegir qué columnas cubre la búsqueda simple - y la casilla de cada columna de fecha/fecha-hora tiene debajo un mini panel de rango rápido: un desplegable de ajustes predefinidos (Cualquier momento / Hoy / Ayer / Esta semana / Este mes / Este año / Rango personalizado) más un par de fechas desde/hasta editable, rellenado según el ajuste predefinido elegido pero aún ajustable después para un afinado fino.

Esto es una comodidad puramente del lado del cliente para rellenar un rango de fechas rápidamente - no se necesita ninguna llamada PHP para activarla, todas las columnas de fecha/fecha-hora la obtienen automáticamente. Se rastrea por separado de las propias filas de condición del panel de Búsqueda avanzada, pero ambas se combinan en la misma petición de filtro cuando la cuadrícula se recarga, de modo que un rango de fechas rápido y una condición avanzada pueden estar activos a la vez.