src.where.condicion_entre - gamboamartin/where GitHub Wiki

condicion_entre

La función condicion_entre es una función privada que genera una cláusula SQL BETWEEN para filtrar un campo con un rango de valores. La función valida la entrada, asegurándose de que el campo y los valores de filtro no estén vacíos, y luego construye la cláusula SQL adecuada.

Signatura

private function condicion_entre(string $campo, array $filtro, bool $valor_campo): string|array

Parámetros

  • string $campo:
    El nombre del campo sobre el cual se aplicará la condición BETWEEN. Esta cadena se limpia de espacios en blanco antes de ser procesada.

  • array $filtro:
    Un array que debe contener dos claves, valor1 y valor2, que representan los valores de inicio y fin del rango para la condición BETWEEN.

  • bool $valor_campo:
    Un valor booleano que determina si el campo debe ser tratado como un valor literal entre comillas en la cláusula SQL. Si es true, el campo será tratado como un valor literal.

Retorna

  • string|array:
    Retorna una cadena que representa la cláusula SQL BETWEEN generada. En caso de error, retorna un array de error generado por $this->error->error().

Explicación Detallada

  1. Limpieza y validación del campo:

    • La función elimina los espacios en blanco del inicio y final de la cadena $campo usando trim().
    • Si el campo resulta vacío después de la limpieza, se genera un mensaje de error y se retorna un array con el mensaje de error.
  2. Validación de los valores en el filtro:

    • La función verifica que el array $filtro contenga las claves valor1 y valor2.
    • Si alguna de estas claves no está presente, se genera un mensaje de error y se retorna un array con el mensaje de error.
  3. Construcción de la cláusula SQL BETWEEN:

    • Si $valor_campo es false, se genera una cláusula BETWEEN utilizando el campo como una columna SQL, y los valores valor1 y valor2 como literales entre comillas simples.
    • Si $valor_campo es true, el campo se trata como un valor literal entre comillas, y los valores valor1 y valor2 se utilizan directamente sin comillas.
  4. Retorno de la cláusula SQL:

    • La función retorna la cadena $condicion que representa la cláusula SQL BETWEEN generada.

Ejemplos

$campo = 'fecha';
$filtro = ['valor1' => '2023-01-01', 'valor2' => '2023-12-31'];
$valor_campo = false;

$resultado = $this->condicion_entre($campo, $filtro, $valor_campo);

// Resultado esperado:
// "fecha BETWEEN '2023-01-01' AND '2023-12-31'"
// Un array de error si ocurre algún problema.

Código de la Función

private function condicion_entre(string $campo, array $filtro, bool $valor_campo): string|array
    {
        $campo = trim($campo);
        if($campo === ''){
            return $this->error->error(mensaje: 'Error campo vacío', data: $campo, es_final: true);
        }
        if(!isset($filtro['valor1'])){
            return $this->error->error(mensaje: 'Error campo vacío $filtro[valor1]', data: $campo, es_final: true);
        }
        if(!isset($filtro['valor2'])){
            return $this->error->error(mensaje: 'Error campo vacío $filtro[valor2]', data: $campo, es_final: true);
        }
        $condicion = $campo . ' BETWEEN ' ."'" .$filtro['valor1'] . "'"." AND "."'".$filtro['valor2'] . "'";

        if($valor_campo){
            $condicion = "'".$campo."'" . ' BETWEEN '  .$filtro['valor1'] ." AND ".$filtro['valor2'];
        }

        return $condicion;

    }