administrador.base.orm._result.genera_registros_hijos.21.18.0 - gamboamartin/administrador GitHub Wiki

genera_registros_hijos

Esta función privada se encarga de generar registros hijos y asignarlos a un array de datos $row, utilizando los modelos hijos proporcionados y los datos correspondientes a cada modelo hijo.

Signatura


private function genera_registros_hijos(modelo_base $modelo_base, array $modelos_hijos, array $row):array

Parámetros

  • $modelo_base (modelo_base): Una instancia del modelo base a utilizar para generar los modelos de datos hijos.

  • $modelos_hijos (array): Un array asociativo donde cada clave es el nombre del modelo hijo y cada valor es un array que contiene los datos del modelo hijo, incluyendo el nombre de la estructura donde se almacenarán los registros hijos y el namespace del modelo hijo.

  • $row (array): El array de datos al que se agregarán los registros hijos.

Retorna

  • Tipo: array
  • Descripción: El array $row actualizado con los registros hijos generados y asignados.

Explicación Detallada

Validación de los datos de los modelos hijos: Se verifica si cada valor en el array $modelos_hijos es un array. Si algún valor no es un array, se devuelve un mensaje de error indicando el formato incorrecto del array $modelos_hijos.

Validación de los datos del modelo hijo: Se verifica si existen las claves necesarias en cada array de datos de modelo hijo. Si alguna clave falta, se devuelve un mensaje de error.

Generación de registros hijo: Para cada modelo hijo en $modelos_hijos, se llama a la función genera_registro_hijo() para generar y asignar los registros hijo al array $row.

Retorno del array actualizado: Se devuelve el array $row actualizado con los registros hijo generados y asignados.

Ejemplos

// Ejemplo: Generar registros hijos y asignarlos a un array de datos
$modelo_base = new ModeloBase();
$modelos_hijos = [
    'Hijo1' => [
        'nombre_estructura' => 'hijos',
        'namespace_model' => 'App\\Models'
    ],
    'Hijo2' => [
        'nombre_estructura' => 'hijos2',
        'namespace_model' => 'App\\Models'
    ]
];
$row = ['id_padre' => 1];
$resultado_actualizado = genera_registros_hijos($modelo_base, $modelos_hijos, $row);
if (is_array($resultado_actualizado)) {
    // Utilizar el array actualizado con los registros hijos generados
    var_dump($resultado_actualizado);
} else {
    // Manejar el mensaje de error
    echo "Hubo un error al generar los registros hijos: ";
    var_dump($resultado_actualizado);
}

Código de la Función

private function genera_registros_hijos(modelo_base $modelo_base, array $modelos_hijos, array $row):array{
        foreach($modelos_hijos as $name_modelo=>$data_modelo){
            if(!is_array($data_modelo)){
                $fix = '$modelos_hijos debe ser un array asociativo de la siguiente forma';
                $fix.= ' $modelos_hijos[name_modelo][nombre_estructura] = nombre d ela tabla dependiente';
                $fix.= ' $modelos_hijos[name_modelo][filtros] = array() con configuracion de filtros';
                $fix.= ' $modelos_hijos[name_modelo][filtros_con_valor] = array() con configuracion de filtros';
                return $this->error->error(mensaje: "Error en datos", data: $modelos_hijos, es_final: true, fix: $fix);
            }
            $keys = array('nombre_estructura','namespace_model');
            $valida = $this->validacion->valida_existencia_keys(keys:$keys, registro: $data_modelo);
            if(errores::$error){
                return  $this->error->error(mensaje: "Error al validar data_modelo",data: $valida);
            }

            if(!isset($data_modelo['nombre_estructura'])){
                return  $this->error->error(mensaje: 'Error debe existir $data_modelo[\'nombre_estructura\'] ',
                    data: $data_modelo, es_final: true);
            }
            if(!is_string($name_modelo)){
                $fix = '$modelos_hijos debe ser un array asociativo de la siguiente forma';
                $fix.= ' $modelos_hijos[name_modelo][nombre_estructura] = nombre d ela tabla dependiente';
                $fix.= ' $modelos_hijos[name_modelo][filtros] = array() con configuracion de filtros';
                $fix.= ' $modelos_hijos[name_modelo][filtros_con_valor] = array() con configuracion de filtros';
                $this->error->error(mensaje: 'Error $name_modelo debe ser un string ', data: $data_modelo,
                    es_final: true, fix: $fix);
            }

            $row = $this->genera_registro_hijo(data_modelo: $data_modelo, modelo_base: $modelo_base,
                name_modelo: $name_modelo, row: $row);
            if(errores::$error){
                return $this->error->error(mensaje: 'Error al generar registros de hijo', data: $row);
            }

        }

        return $row;
    }