src.where.genera_not_in - gamboamartin/where GitHub Wiki
genera_not_in
La función genera_not_in
es una función privada 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, extrae los datos necesarios y luego construye la cláusula SQL NOT IN
.
Signatura
private function genera_not_in(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. En caso de error, retorna un array de error generado por$this->error->error()
.
Explicación Detallada
-
Extracción de los datos del array
$not_in
:- La función llama a
data_in()
para extraer y validar los datos del array$not_in
, como la llave (llave
) y la lista de valores (values
). - Si ocurre un error durante la extracción de los datos, 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
:- La función llama a
not_in_sql()
para construir la cláusula SQLNOT IN
utilizando la llave y la lista de valores extraídos. - 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.
- La función llama a
-
Retorno de la cláusula SQL:
- La función retorna la cadena que contiene la cláusula SQL
NOT IN
generada.
- 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($not_in);
// Resultado esperado:
// "id_producto NOT IN ('100', '200', '300')"
Código de la Función
private function genera_not_in(array $not_in): array|string
{
$data_in = $this->data_in(in: $not_in);
if(errores::$error){
return $this->error->error(mensaje: 'Error al generar data in',data: $data_in);
}
$not_in_sql = $this->not_in_sql(llave: $data_in->llave, values:$data_in->values);
if(errores::$error){
return $this->error->error(mensaje: 'Error al generar sql',data: $not_in_sql);
}
return $not_in_sql;
}