administrador.base.orm.sql.in - gamboamartin/administrador GitHub Wiki

in

La función in es una función pública que construye una cláusula SQL IN a partir de una llave (nombre de columna) y una lista de valores SQL. Valida la consistencia entre los parámetros (llave y values_sql), genera la cláusula SQL y elimina cualquier espacio doble innecesario en la cadena resultante.

Signatura

final public function in(string $llave, string $values_sql): string|array

Parámetros

  • string $llave:
    El nombre del campo o columna que se utilizará en la cláusula SQL IN. Debe ser una cadena no vacía si values_sql contiene información.

  • string $values_sql:
    Una cadena que representa una lista de valores que se utilizarán en la cláusula SQL IN. Debe ser una cadena válida y no vacía si llave contiene información.

Retorna

  • string|array:
    Retorna la cláusula SQL IN generada como una cadena si la validación es exitosa. En caso de error, retorna un array de error generado por $this->error->error().

Explicación Detallada

  1. Validación de los parámetros:

    • La función llama a valida_in() para verificar la consistencia entre los parámetros llave y values_sql. Si uno de los dos tiene información, el otro también debe tenerla.
    • Si ocurre un error en la validación, se genera un mensaje de error y se retorna un array con el mensaje de error.
  2. Generación de la cláusula SQL IN:

    • Si la cadena values_sql no está vacía, la función construye la cláusula SQL en el formato "$llave IN ($values_sql)".
  3. Limpieza de espacios dobles:

    • La función utiliza limpia_espacios_dobles() para eliminar cualquier espacio doble en la cláusula SQL generada.
  4. Retorno de la cláusula SQL:

    • Si la limpieza de espacios dobles se realiza correctamente, la función retorna la cadena con la cláusula SQL IN generada. Si ocurre un error durante la limpieza, se genera un mensaje de error.

Ejemplos

$llave = 'id_producto';
$values_sql = "'100', '200', '300'";

$resultado = $this->in($llave, $values_sql);

// Resultado esperado:
// "id_producto IN ('100', '200', '300')"

Código de la Función

final public function in(string $llave, string $values_sql): string|array
    {
        $valida = $this->valida_in(llave: $llave, values_sql: $values_sql);
        if(errores::$error){
            return $this->error->error(mensaje: 'Error al validar in', data: $valida);
        }

        $in_sql = '';
        if($values_sql!==''){
            $in_sql.="$llave IN ($values_sql)";
        }

        $in_sql = $this->limpia_espacios_dobles(txt: $in_sql);
        if(errores::$error){
            return $this->error->error(mensaje: 'Error al limpiar sql', data: $in_sql);
        }

        return $in_sql;
    }