src.where.not_in_sql - gamboamartin/where GitHub Wiki
not_in_sql
La función not_in_sql es una función privada que genera una cláusula SQL NOT IN a partir de una llave (nombre de columna) y un array de valores. Valida que la llave no esté vacía, convierte el array de valores en una lista SQL y luego construye la cláusula NOT IN para ser utilizada en consultas SQL.
Signatura
private function not_in_sql(string $llave, array $values): array|string
Parámetros
- 
string $llave:
El nombre del campo o columna que se utilizará en la cláusula SQLNOT IN. Esta cadena debe ser válida y no estar vacía. - 
array $values:
Un array de valores que se utilizarán para construir la lista de valores en la cláusula SQLNOT IN. Estos valores serán convertidos en una lista separada por comas y envueltos en comillas simples. 
Retorna
array|string:
Retorna la cláusula SQLNOT INgenerada 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
- 
Validación de la llave:
- La función utiliza 
trim()para eliminar los espacios en blanco de la cadena$llavey valida que no esté vacía. - Si 
$llaveestá vacía, se genera un mensaje de error y se retorna un array con el mensaje de error. 
 - La función utiliza 
 - 
Conversión del array de valores a una lista SQL:
- La función llama a 
values_sql_in()para convertir el array$valuesen una lista de valores SQL, donde cada valor es protegido contra inyecciones SQL. - Si ocurre un error durante este proceso, se genera un mensaje de error y se retorna un array con el mensaje de error.
 
 - La función llama a 
 - 
Generación de la cláusula SQL
NOT IN:- Si la cadena 
$values_sqlno está vacía, la función construye la cláusula SQL en el formato"$llave NOT IN ($values_sql)". 
 - Si la cadena 
 - 
Retorno de la cláusula SQL:
- La función retorna la cadena que contiene la cláusula SQL 
NOT INgenerada. 
 - La función retorna la cadena que contiene la cláusula SQL 
 
Ejemplos
$llave = 'id_producto';
$values = ['100', '200', '300'];
$resultado = $this->not_in_sql($llave, $values);
// Resultado esperado:
// "id_producto NOT IN ('100', '200', '300')"
Código de la Función
private function not_in_sql(string $llave, array $values): array|string
    {
        $llave = trim($llave);
        if($llave === ''){
            return $this->error->error(mensaje: 'Error la llave esta vacia',data: $llave, es_final: true);
        }
        $values_sql = $this->values_sql_in(values:$values);
        if(errores::$error){
            return $this->error->error(mensaje: 'Error al generar sql',data: $values_sql);
        }
        $not_in_sql = '';
        if($values_sql!==''){
            $not_in_sql.="$llave NOT IN ($values_sql)";
        }
        return $not_in_sql;
    }