administrador.base.orm._result.result - gamboamartin/administrador GitHub Wiki
result
Esta función procesa el resultado de una consulta SQL, actualizando varios atributos y devolviendo un objeto con los datos actualizados. La función toma una consulta SQL, un modelo, el número de registros, un array de nuevos registros y un objeto con totales. Además, convierte cada registro del array en un objeto.
Signatura
private function result(string $consulta, modelo_base $modelo, int $n_registros, array $new_array, stdClass $totales_rs): stdClass
Parámetros
$consulta (string): La consulta SQL que se ha ejecutado. $modelo (modelo_base): El modelo base que contiene información adicional sobre la entidad. $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
- stdClass: La función devuelve un objeto 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.
Explicación Detallada
-
Obtención de los campos de la entidad:
-
- Se obtiene la lista de campos de la entidad desde el modelo ($modelo->campos_entidad).
-
Creación del objeto de datos:
-
- Se crea un nuevo objeto stdClass llamado $data que contiene:
-
-
- registros: los nuevos registros ($new_array).
-
-
-
- n_registros: el número de registros ($n_registros).
-
-
-
- sql: la consulta SQL ($consulta).
-
-
-
- campos_entidad: los campos de la entidad ($campos_entidad).
-
-
-
- totales: los totales relacionados con los resultados ($totales_rs).
-
-
Conversión de registros a objetos:
-
- Se inicializa un array vacío registros_obj.
-
- Se itera sobre cada registro en registros y se convierte cada uno a un objeto, añadiéndolo al array registros_obj.
-
- Se asigna registros_obj al objeto $data.
-
Retorno del objeto de datos:
-
- Se devuelve el objeto $data con los datos actualizados.
Ejemplos
// Ejemplo de uso de la función 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->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
)
)
)
*/
Código de la Función
private function result(string $consulta, modelo_base $modelo, int $n_registros, array $new_array, stdClass $totales_rs): stdClass
{
$campos_entidad = $modelo->campos_entidad;
$data = new stdClass();
$data->registros = $new_array;
$data->n_registros = (int)$n_registros;
$data->sql = $consulta;
$data->campos_entidad = $campos_entidad;
$data->totales = $totales_rs;
$data->registros_obj = array();
foreach ($data->registros as $row) {
$row_obj = (object)$row;
$data->registros_obj[] = $row_obj;
}
return $data;
}