Pestañas de filtro
Convierte el argumento final opcional $tab de where()/or_where() en una franja de pestañas conmutable por el visitante encima de la cuadrícula.
Filtros base frente a pestañas
where()/or_where() sin un argumento final $tab añaden un filtro base permanente, siempre aplicado y forzado en el servidor - firmado con HMAC mediante XcrudConfig::$appSecret, de modo que un visitante no puede ampliarlo ni eliminarlo editando la URL. Añade un argumento $tab y esa misma condición se convierte en una opción dentro de una franja de pestañas con nombre, conmutable por el visitante y renderizada encima de la cuadrícula - al hacer clic en una pestaña se cambia qué condición está activa.
public function where(string $field, ?string $operator = null, ?string $value = null, ?string $tab = null): self
public function or_where(string $field, ?string $operator = null, ?string $value = null, ?string $tab = null): self
Ambas aceptan el estilo de 3 argumentos con símbolo/código de operador con nombre (=, !=, >, >=, <, <=, o códigos como eq/neq/gt/contains/starts/ends) o un atajo de cadena combinada única, solo para operadores de símbolo (->where('amount > 500')). Con el atajo, $tab ocupa el segundo argumento, que de otro modo quedaría sin usar.
Un ejemplo con 3 pestañas
Toda llamada a where() que comparta la misma etiqueta de pestaña pertenece a esa pestaña y se combina con las demás exactamente igual que las llamadas sin pestaña - con AND, en el orden de la llamada:
$xcrud->where('status', '=', 'active', 'Active');
$xcrud->where('status', '=', 'archived', 'Archived');
$xcrud->where('amount', '>', '0', 'All');
Al hacer clic en "Archived" solo se aplica status = 'archived'; no se aplica también la condición de "Active". Cada pestaña está firmada de forma independiente e inviolable, igual que una llamada a where() normal - un visitante solo puede elegir entre las pestañas exactamente aprobadas por el autor de la página, nunca forjar un filtro distinto editando la URL.
Una pestaña puede combinar más de una condición - dos llamadas a where() que comparten etiqueta producen un AND real entre ellas, no dos condiciones sin relación que simplemente comparten nombre:
$xcrud->where('amount', '>=', '1000', 'Medium');
$xcrud->where('amount', '<=', '50000', 'Medium');
Parámetros
| Parámetro | Tipo | Predeterminado | Descripción |
|---|---|---|---|
$field | string | - | Nombre de la columna, o la condición combinada completa cuando se usa el atajo de cadena única. |
$operator | string|null | null | Símbolo (=, !=, >, >=, <, <=) o código con nombre (eq, neq, gt, gte, lt, lte, contains, starts, ends). Se omite al usar el atajo de cadena única. |
$value | string|null | null | Valor con el que comparar. Se omite al usar el atajo de cadena única. |
$tab | string|null | null | Etiqueta de la pestaña. Si se omite, la llamada sigue siendo un filtro base permanente; si se indica, agrupa la condición bajo una pestaña conmutable por el visitante. |
where_raw() / or_where_raw(): la pestaña de SQL sin procesar
Algunas condiciones no tienen la forma "campo OP valor" - un IN (subquery), por ejemplo. where_raw($condition, $tab = null) y or_where_raw($condition, $tab = null) insertan $condition literalmente (entre paréntesis) en la cláusula WHERE, sin ningún análisis, lista blanca ni vinculación de parámetros - el mismo nivel de confianza que el SQL sin procesar de subselect(). Nunca construyas $condition a partir de la entrada de la petición; debe ser una cadena literal que tú mismo hayas escrito, igual que cualquier otro SQL de tu código.
public function where_raw(string $condition, ?string $tab = null): self
public function or_where_raw(string $condition, ?string $tab = null): self
$xcrud->where_raw(
'customerNumber IN (SELECT customerNumber FROM payments GROUP BY customerNumber HAVING COUNT(*) > 5)',
'Repeat Customers'
);
Viaja hasta la API de la misma forma que una condición where() normal - como parte del mismo payload de where base, cubierto por la misma firma HMAC única - así que es igual de inviolable, sin ninguna firma propia por separado. Acepta el mismo argumento final opcional $tab para hacerla conmutable como parte de una pestaña de filtro, y se combina con pestañas construidas con where() de la forma habitual.
Pestañas de rango de fechas
where_raw() es también lo que impulsa las pestañas de filtro de rango de fechas acumulativas (Esta semana / Este mes / Este año) - consulta Filtros de rango de fechas para ese recorrido específico.