administrador.base.orm.sql.in - gamboamartin/administrador GitHub Wiki
in
La función in
es una función pública que construye una cláusula SQL IN
a partir de una llave (nombre de columna) y una lista de valores SQL. Valida la consistencia entre los parámetros (llave
y values_sql
), genera la cláusula SQL y elimina cualquier espacio doble innecesario en la cadena resultante.
Signatura
final public function in(string $llave, string $values_sql): string|array
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 sivalues_sql
contiene información. -
string $values_sql
:
Una cadena que representa una lista de valores que se utilizarán en la cláusula SQLIN
. Debe ser una cadena válida y no vacía sillave
contiene información.
Retorna
string|array
:
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 los parámetros:
- La función llama a
valida_in()
para verificar la consistencia entre los parámetrosllave
yvalues_sql
. Si uno de los dos tiene información, el otro también debe tenerla. - 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 cadena
values_sql
no está vacía, la función construye la cláusula SQL en el formato"$llave IN ($values_sql)"
.
- Si la cadena
-
Limpieza de espacios dobles:
- La función utiliza
limpia_espacios_dobles()
para eliminar cualquier espacio doble en la cláusula SQL generada.
- La función utiliza
-
Retorno de la cláusula SQL:
- Si la limpieza de espacios dobles se realiza correctamente, la función retorna la cadena con la cláusula SQL
IN
generada. Si ocurre un error durante la limpieza, se genera un mensaje de error.
- Si la limpieza de espacios dobles se realiza correctamente, la función retorna la cadena con la cláusula SQL
Ejemplos
$llave = 'id_producto';
$values_sql = "'100', '200', '300'";
$resultado = $this->in($llave, $values_sql);
// Resultado esperado:
// "id_producto IN ('100', '200', '300')"
Código de la Función
final public function in(string $llave, string $values_sql): string|array
{
$valida = $this->valida_in(llave: $llave, values_sql: $values_sql);
if(errores::$error){
return $this->error->error(mensaje: 'Error al validar in', data: $valida);
}
$in_sql = '';
if($values_sql!==''){
$in_sql.="$llave IN ($values_sql)";
}
$in_sql = $this->limpia_espacios_dobles(txt: $in_sql);
if(errores::$error){
return $this->error->error(mensaje: 'Error al limpiar sql', data: $in_sql);
}
return $in_sql;
}