administrador.base.orm._result.data_result - gamboamartin/administrador GitHub Wiki

data_result

Esta función procesa una consulta SQL, ejecutándola, maquetando los resultados, y devolviendo los datos procesados o un mensaje de error en caso de que ocurra algún problema.

Signatura

final public function data_result(array $campos_encriptados, array $columnas_totales, string $consulta, modelo_base $modelo): array|stdClass


Parámetros

    • $campos_encriptados** (array): Un array que contiene los campos que deben ser encriptados.
    • $columnas_totales** (array): Un array que contiene las columnas de totales.
    • $consulta** (string): La consulta SQL que se va a ejecutar.
    • $modelo** (modelo_base): El modelo base que contiene información adicional sobre la entidad.

Retorna

  • array|stdClass: La función devuelve un objeto stdClass que contiene los registros, el número de registros, la consulta SQL, los campos de la entidad, los totales y una versión de los registros convertidos a objetos. Si ocurre un error, devuelve un array con los detalles del error.

Explicación Detallada

  • Validación de la consulta:

    • Se elimina cualquier espacio en blanco al inicio y final de la consulta.
    • Si la consulta está vacía después de eliminar los espacios en blanco, se retorna un mensaje de error.
  • Ejecución de la consulta SQL:

    • Se llama a la función result_sql para ejecutar la consulta SQL y obtener los resultados.
    • Si ocurre un error durante la ejecución de la consulta, se retorna un mensaje de error.
  • Maquetación de los resultados:

    • Se llama a la función maqueta_result para procesar y maquetar los resultados obtenidos de la consulta SQL.
    • Si ocurre un error durante el procesamiento de los registros, se retorna un mensaje de error.
  • Retorno del resultado final:

    • Si no ocurre ningún error, se retorna el objeto resultante con los datos procesados.

Ejemplos

// Ejemplo de uso de la función data_result

// Supongamos que tenemos un modelo base con la siguiente estructura
class modelo_base {
    public $tabla = 'usuarios';
    public $campos_entidad = ['id', 'nombre', 'apellido'];
}

$campos_encriptados = ['password'];
$columnas_totales = ['total'];
$consulta = "SELECT * FROM usuarios";
$modelo = new modelo_base();

// Llamada a la función
$resultado = $this->data_result($campos_encriptados, $columnas_totales, $consulta, $modelo);

// El objeto de datos se ha actualizado y convertido los registros a objetos
print_r($resultado);

/* 
Imprime:

stdClass Object
(
    [registros] => Array
        (
            [0] => Array
                (
                    [id] => 1
                    [nombre] => Juan
                    [apellido] => Pérez
                )

            [1] => Array
                (
                    [id] => 2
                    [nombre] => Ana
                    [apellido] => García
                )

        )

    [n_registros] => 2
    [sql] => SELECT * FROM usuarios
    [campos_entidad] => Array
        (
            [0] => id
            [1] => nombre
            [2] => apellido
        )

    [totales] => stdClass Object
        (
            [total] => 100
        )

    [registros_obj] => Array
        (
            [0] => stdClass Object
                (
                    [id] => 1
                    [nombre] => Juan
                    [apellido] => Pérez
                )

            [1] => stdClass Object
                (
                    [id] => 2
                    [nombre] => Ana
                    [apellido] => García
                )

        )

)
*/

// Ejemplo de manejo de error

$consulta_vacia = "  "; // Consulta vacía
$resultado_error = $this->data_result($campos_encriptados, $columnas_totales, $consulta_vacia, $modelo);

if (is_array($resultado_error)) {
    echo "Error: " . $resultado_error['mensaje']; // Imprime: Error: Error consulta vacia
}

Código de la Función

 final public function data_result(array $campos_encriptados,array $columnas_totales, string $consulta,
                                 modelo_base $modelo): array|stdClass
    {
        $consulta = trim($consulta);
        if($consulta === ''){
            return $this->error->error(mensaje: "Error consulta vacia", data: $consulta.' tabla: '.$modelo->tabla,
                es_final: true);
        }
        $result_sql = $this->result_sql(campos_encriptados: $campos_encriptados,
            columnas_totales: $columnas_totales, consulta: $consulta,modelo: $modelo);
        if (errores::$error) {
            return $this->error->error(mensaje: "Error al ejecutar sql", data: $result_sql);
        }

        $data = $this->maqueta_result(consulta: $consulta, modelo: $modelo,
            n_registros: $result_sql->n_registros, new_array: $result_sql->new_array, totales_rs: $result_sql->totales);
        if (errores::$error) {
            return $this->error->error(mensaje: "Error al parsear registros", data: $data);
        }
        return $data;
    }