administrador.base.orm._where.sql_where - gamboamartin/administrador GitHub Wiki
sql_where
La función sql_where es una función pública que genera una consulta SQL con una cláusula WHERE basada en el identificador del registro (registro_id) y, opcionalmente, en un campo clave (campo_llave). Además, integra medidas de seguridad en la consulta si están configuradas en el modelo. La función asegura que la consulta final esté correctamente estructurada y valida los parámetros antes de construirla.
Signatura
final public function sql_where(string $consulta, modelo $modelo):array|string
Parámetros
-
string $consulta:
Una cadena que representa la consulta SQL inicial a la que se le añadirá la cláusulaWHEREgenerada. -
modelo $modelo:
Una instancia de la clasemodeloque contiene los detalles del modelo de datos sobre el que se está trabajando. Este objeto debe tener propiedades comoregistro_id,campo_llave, ytabla, que son utilizadas para construir la cláusulaWHERE. También puede contener configuraciones de seguridad que serán aplicadas a la consulta.
Retorno
array|string:
Retorna una cadena que representa la consulta SQL completa con la cláusulaWHEREgenerada y la seguridad integrada, si corresponde. En caso de error, retorna un array de error generado por$this->error->error().
Explicación Detallada
-
Validación del identificador de registro:
- La función verifica si
registro_iden el modelo es mayor que 0. - Si
registro_ides menor o igual a 0, se genera un mensaje de error y se retorna un array con el mensaje de error.
- La función verifica si
-
Generación de la cláusula
WHEREinicial:- La función llama a
where_inicial()para generar la cláusulaWHEREbasada en el campo clave (campo_llave) y el identificador del registro (registro_id) del modelo. - Si ocurre un error durante la generación de la cláusula
WHERE, se genera un mensaje de error y se retorna un array con el mensaje de error.
- La función llama a
-
Integración de la seguridad en la consulta:
- La función llama a
integra_where_seguridad()para integrar la cláusulaWHEREgenerada con cualquier medida de seguridad configurada en el modelo. - Si ocurre un error durante este proceso, se genera un mensaje de error y se retorna un array con el mensaje de error.
- La función llama a
-
Retorno de la consulta SQL completa:
- La función retorna la consulta SQL completa, con la cláusula
WHEREgenerada y las medidas de seguridad aplicadas, si corresponde.
- La función retorna la consulta SQL completa, con la cláusula
Ejemplos
$consulta = "SELECT * FROM usuarios"; $modelo = new modelo(); $modelo->registro_id = 123; modelo->campo_llave = 'id'; $modelo->tabla = 'usuarios'; $modelo->aplica_seguridad = true; $modelo->columnas_extra = [ 'usuario_permitido_id' => '(SELECT usuario_permitido_id FROM usuarios WHERE id = usuarios.id)' ];
$resultado = $this->sql_where($consulta, $modelo);
// Resultado esperado: // 'SELECT * FROM usuarios WHERE usuarios.id = 123 AND (usuario_permitido_id = $_SESSION[usuario_id])' // Un array de error si ocurre algún problema.
### Código de la Función
```php
final public function sql_where(string $consulta, modelo $modelo):array|string
{
if($modelo->registro_id <= 0 ){
return $this->error->error(mensaje: 'Error registro_id debe ser mayor a 0',data: $modelo->registro_id,
es_final: true);
}
$where = $this->where_inicial(campo_llave: $modelo->campo_llave,registro_id: $modelo->registro_id,
tabla: $modelo->tabla);
if(errores::$error){
return $this->error->error(mensaje: 'Error al generar where',data: $where);
}
$consulta = $this->integra_where_seguridad(consulta: $consulta, modelo: $modelo, where: $where);
if(errores::$error){
return $this->error->error(mensaje: 'Error al generar where', data: $consulta);
}
return $consulta;
}