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áusulaWHERE
generada. -
modelo $modelo
:
Una instancia de la clasemodelo
que 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áusulaWHERE
generada 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_id
en el modelo es mayor que 0. - Si
registro_id
es 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
WHERE
inicial:- La función llama a
where_inicial()
para generar la cláusulaWHERE
basada 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áusulaWHERE
generada 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
WHERE
generada 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;
}