src.where.genera_not_in_sql - gamboamartin/where GitHub Wiki

genera_not_in_sql

La función genera_not_in_sql es una función pública que genera una cláusula SQL NOT IN a partir de un array que contiene una llave (nombre de columna) y un conjunto de valores. La función valida la estructura del array, verifica que contenga las claves necesarias (llave y values), y luego construye la cláusula SQL NOT IN si el array es válido.

Signatura

final public function genera_not_in_sql(array $not_in): array|string

Parámetros

  • array $not_in:
    Un array asociativo que debe contener las claves llave (nombre del campo o columna) y values (un array de valores que se utilizarán en la cláusula NOT IN).

Retorna

  • array|string:
    Retorna la cláusula SQL NOT IN generada como una cadena si la validación es exitosa. Si no se proporcionan datos en el array $not_in, retorna una cadena vacía. En caso de error, retorna un array de error generado por $this->error->error().

Explicación Detallada

  1. Verificación del contenido del array $not_in:

    • Si el array $not_in contiene elementos, la función procede con las validaciones y la generación de la cláusula NOT IN. De lo contrario, retorna una cadena vacía.
  2. Validación de la estructura del array $not_in:

    • La función utiliza valida_existencia_keys() para verificar que el array $not_in contenga las claves llave y values.
    • Si alguna clave falta, se genera un mensaje de error y se retorna un array con el mensaje de error.
  3. Generación de la cláusula SQL NOT IN:

    • Si la validación es exitosa, la función llama a genera_not_in() para construir la cláusula SQL NOT IN utilizando los datos del array $not_in.
    • Si ocurre un error durante la generación de la cláusula SQL, se genera un mensaje de error y se retorna un array con el mensaje de error.
  4. Retorno de la cláusula SQL:

    • Si todo es correcto, la función retorna la cadena que contiene la cláusula SQL NOT IN generada. Si no se proporcionan datos en $not_in, retorna una cadena vacía.

Ejemplos

$not_in = [
    'llave' => 'id_producto',
    'values' => ['100', '200', '300']
];

$resultado = $this->genera_not_in_sql($not_in);

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

Código de la Función

final public function genera_not_in_sql(array $not_in): array|string
    {
        $not_in_sql = '';
        if(count($not_in)>0){
            $keys = array('llave','values');
            $valida = $this->validacion->valida_existencia_keys(keys: $keys, registro: $not_in);
            if(errores::$error){
                return $this->error->error(mensaje: 'Error al validar not_in',data: $valida);
            }
            $not_in_sql = $this->genera_not_in(not_in: $not_in);
            if(errores::$error){
                return $this->error->error(mensaje: 'Error al generar sql',data: $not_in_sql);
            }

        }
        return $not_in_sql;
    }