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 clavesllave
(nombre del campo o columna) yvalues
(un array de valores que se utilizarán en la cláusulaNOT IN
).
Retorna
array|string
:
Retorna la cláusula SQLNOT 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
-
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áusulaNOT IN
. De lo contrario, retorna una cadena vacía.
- Si el array
-
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 clavesllave
yvalues
. - Si alguna clave falta, se genera un mensaje de error y se retorna un array con el mensaje de error.
- La función utiliza
-
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 SQLNOT 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.
- Si la validación es exitosa, la función llama a
-
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.
- Si todo es correcto, la función retorna la cadena que contiene la cláusula SQL
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;
}