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;
}