administrador.base.orm.where.in_sql - gamboamartin/administrador GitHub Wiki
in_sql
La función in_sql
es una función privada que genera una cláusula SQL 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, valida la consistencia entre la llave y los valores, y luego construye la cláusula IN
.
Signatura
private function 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 SQLIN
. Debe ser una cadena no vacía para que la función continúe. -
array $values
:
Un array de valores que se utilizarán para construir la lista de valores en la cláusula SQLIN
. Estos valores se formatean y escapan para su uso en una consulta SQL.
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 llave:
- La función elimina los espacios en blanco en la cadena
$llave
utilizandotrim()
y valida que no esté vacía. - Si
$llave
está vacía, se genera un mensaje de error y se retorna un array con el mensaje de error.
- La función elimina los espacios en blanco en la cadena
-
Conversión del array de valores a lista SQL:
- La función llama a
values_sql_in()
para convertir el array$values
en una lista SQL válida y segura, utilizando la clasewhere
. - Si ocurre un error durante la conversión, se genera un mensaje de error y se retorna un array con el mensaje de error.
- La función llama a
-
Validación de la relación entre la llave y los valores:
- La función llama a
valida_in()
para verificar la consistencia entre la llave y los valores, es decir, que si la llave tiene información, también deben estar presentes los valores y viceversa. - Si ocurre un error en la validación, 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
:- Si la validación es exitosa, la función llama a
in()
para construir la cláusula SQLIN
en el formato"$llave IN ($values_sql)"
. - 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:
- 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
$llave = 'id_producto';
$values = ['100', '200', '300'];
$resultado = $this->in_sql($llave, $values);
// Resultado esperado:
// "id_producto IN ('100', '200', '300')"
Código de la Función
private function 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 = (new \gamboamartin\where\where())->values_sql_in(values:$values);
if(errores::$error){
return $this->error->error(mensaje: 'Error al generar sql',data: $values_sql);
}
$valida = (new sql())->valida_in(llave: $llave, values_sql: $values_sql);
if(errores::$error){
return $this->error->error(mensaje: 'Error al validar in', data: $valida);
}
$in_sql = (new sql())->in(llave: $llave,values_sql: $values_sql);
if(errores::$error){
return $this->error->error(mensaje: 'Error al generar sql',data: $in_sql);
}
return $in_sql;
}