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