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áusula WHERE generada.

  • modelo $modelo:
    Una instancia de la clase modelo que contiene los detalles del modelo de datos sobre el que se está trabajando. Este objeto debe tener propiedades como registro_id, campo_llave, y tabla, que son utilizadas para construir la cláusula WHERE. 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áusula WHERE generada y la seguridad integrada, si corresponde. En caso de error, retorna un array de error generado por $this->error->error().

Explicación Detallada

  1. 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.
  2. Generación de la cláusula WHERE inicial:

    • La función llama a where_inicial() para generar la cláusula WHERE 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.
  3. Integración de la seguridad en la consulta:

    • La función llama a integra_where_seguridad() para integrar la cláusula WHERE 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.
  4. 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.

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;

    }