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

maqueta_result

Esta función organiza el resultado de una consulta SQL, asegurándose de inicializar correctamente los datos del modelo y procesar los registros. Combina dos funciones auxiliares, init_result_base y result, para completar este proceso y manejar errores durante el procesamiento.

Signatura

private function maqueta_result(string $consulta, modelo_base $modelo, int $n_registros, array $new_array, stdClass $totales_rs): array|stdClass

Parámetros

$consulta (string): La consulta SQL que se ha ejecutado. $modelo (modelo_base): El modelo base que será actualizado con los nuevos datos. $n_registros (int): El número de registros obtenidos de la consulta. $new_array (array): Un array que contiene los nuevos registros obtenidos. $totales_rs (stdClass): Un objeto que contiene los totales relacionados con los resultados de la consulta.

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

  • Inicialización del resultado base:

    • Se llama a la función init_result_base para inicializar los datos base del modelo.
    • Si ocurre un error durante esta inicialización, se retorna un mensaje de error.
  • Procesamiento de los resultados:

    • Se llama a la función result para procesar los registros y convertirlos a objetos.
    • Si ocurre un error durante este procesamiento, 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 maqueta_result

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

$consulta = "SELECT * FROM usuarios";
$modelo = new modelo_base();
$n_registros = 2;
$new_array = [
    ["id" => 1, "nombre" => "Juan", "apellido" => "Pérez"],
    ["id" => 2, "nombre" => "Ana", "apellido" => "García"],
];
$totales_rs = new stdClass();
$totales_rs->total = 100;

// Llamada a la función
$resultado = $this->maqueta_result($consulta, $modelo, $n_registros, $new_array, $totales_rs);

// 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

// Simulamos un error durante la inicialización
class modelo_base_with_error {
    public $campos_entidad = ['id', 'nombre', 'apellido'];
    public static $error = true;
}

$consulta = "SELECT * FROM usuarios";
$modelo = new modelo_base_with_error();
$n_registros = 2;
$new_array = [
    ["id" => 1, "nombre" => "Juan", "apellido" => "Pérez"],
    ["id" => 2, "nombre" => "Ana", "apellido" => "García"],
];
$totales_rs = new stdClass();
$totales_rs->total = 100;

// Llamada a la función
$resultado = $this->maqueta_result($consulta, $modelo, $n_registros, $new_array, $totales_rs);

if (is_array($resultado)) {
    echo "Error: " . $resultado['mensaje']; // Imprime: Error: Error al parsear resultado
}

Código de la Función

 private function maqueta_result(string $consulta, modelo_base $modelo, int $n_registros, array $new_array, stdClass $totales_rs ): array|stdClass
    {
        $init = $this->init_result_base(consulta: $consulta, modelo: $modelo, n_registros: $n_registros,
            new_array: $new_array, totales_rs: $totales_rs);
        if (errores::$error) {
            return $this->error->error(mensaje: "Error al parsear resultado", data: $init);
        }

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