src.where.genera_in - gamboamartin/where GitHub Wiki
genera_in
La función genera_in
es una función pública que genera una cláusula SQL IN
a partir de un array que contiene una llave (nombre de columna) y un conjunto de valores. La función valida que el array tenga las claves requeridas (llave
y values
), obtiene los datos necesarios y luego construye la cláusula SQL IN
.
Signatura
final public function genera_in(array $in): array|string
Parámetros
array $in
:
Un array asociativo que debe contener las clavesllave
(nombre del campo o columna) yvalues
(un array de valores que se utilizarán para la cláusulaIN
).
Retorna
array|string
:
Retorna la cláusula SQLIN
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
-
Validación de la estructura del array
$in
:- La función verifica que el array
$in
contenga las claves requeridas (llave
yvalues
), utilizando el métodovalida_existencia_keys()
de la clasevalidacion
. - Si alguna de estas claves falta, se genera un mensaje de error y se retorna un array con el mensaje de error.
- La función verifica que el array
-
Extracción de los datos del array
$in
:- La función llama a
data_in()
para extraer y validar los datos necesarios, como el campo (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
IN
:- La función llama a
in_sql()
para construir la cláusula SQLIN
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
IN
generada.
- La función retorna la cadena que contiene la cláusula SQL
Ejemplos
$in = [
'llave' => 'id_producto',
'values' => ['100', '200', '300']
];
$resultado = $this->genera_in($in);
// Resultado esperado:
// "id_producto IN ('100', '200', '300')"
Código de la Función
final public function genera_in(array $in): array|string
{
$keys = array('llave','values');
$valida = $this->validacion->valida_existencia_keys( keys:$keys, registro: $in);
if(errores::$error){
return $this->error->error(mensaje: 'Error al validar not_in',data: $valida);
}
$data_in = $this->data_in(in: $in);
if(errores::$error){
return $this->error->error(mensaje: 'Error al generar data in',data: $data_in);
}
$in_sql = $this->in_sql(llave: $data_in->llave, values:$data_in->values);
if(errores::$error){
return $this->error->error(mensaje: 'Error al generar sql',data: $in_sql);
}
return $in_sql;
}