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 claves campo_1, campo_2, y fecha.

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

  1. 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.
  2. 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.
  3. 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;
    }