src.where.filtro_fecha - gamboamartin/where GitHub Wiki
filtro_fecha
La función filtro_fecha
es una función pública que genera una cláusula SQL completa basada en un conjunto de filtros de fechas proporcionados en un array. Valida y construye la cláusula SQL usando otras funciones internas, y encapsula el resultado dentro de paréntesis si es necesario.
Signatura
final public function filtro_fecha(array $filtro_fecha):array|string
Parámetros
array $filtro_fecha
:
Un array de filtros de fecha. Cada filtro dentro del array debe ser un array asociativo que contenga las clavescampo_1
,campo_2
, yfecha
.
Retorna
array|string
:
Retorna la cláusula SQL generada como una cadena si la validación y generación son exitosas. En caso de error, retorna un array de error generado por$this->error->error()
.
Explicación Detallada
-
Llamada a
filtro_fecha_base
:- La función llama a
filtro_fecha_base()
para generar la cláusula SQL que corresponde a los filtros de fecha proporcionados. - Si ocurre un error en la función
filtro_fecha_base
, se genera un mensaje de error y se retorna un array con el mensaje de error.
- La función llama a
-
Encapsulación de la cláusula SQL:
- Si la cláusula SQL generada por
filtro_fecha_base
no está vacía, la función encapsula la cláusula dentro de paréntesis para asegurar que se trate como un conjunto único de condiciones en una consulta SQL.
- Si la cláusula SQL generada por
-
Retorno de la cláusula SQL final:
- La función retorna la cláusula SQL generada, lista para ser utilizada en una consulta SQL.
Ejemplos
$filtro_fecha = [
[
'campo_1' => 'fecha_inicio',
'campo_2' => 'fecha_fin',
'fecha' => '2023-08-15'
],
[
'campo_1' => 'fecha_creacion',
'campo_2' => 'fecha_modificacion',
'fecha' => '2023-08-16'
]
];
$resultado = $this->filtro_fecha($filtro_fecha);
// Resultado esperado:
// "((2023-08-15 >= fecha_inicio AND 2023-08-15 <= fecha_fin) AND (2023-08-16 >= fecha_creacion AND 2023-08-16 <= fecha_modificacion))"
Código de la Función
final public function filtro_fecha(array $filtro_fecha):array|string
{
$filtro_fecha_sql = $this->filtro_fecha_base(filtro_fecha: $filtro_fecha);
if(errores::$error){
return $this->error->error(mensaje: 'Error al obtener sql',data: $filtro_fecha_sql);
}
if($filtro_fecha_sql !==''){
$filtro_fecha_sql = "($filtro_fecha_sql)";
}
return $filtro_fecha_sql;
}