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

genera_registro_hijo

Esta función privada se encarga de generar un registro hijo y asignarlo a un array de datos $row, utilizando un modelo base proporcionado y los datos del modelo hijo.

Signatura


private function genera_registro_hijo(array $data_modelo, modelo_base $modelo_base, string $name_modelo, array $row):array

Parámetros

  • $data_modelo (array): 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.

  • $modelo_base (modelo_base): Una instancia del modelo base a utilizar para generar el modelo de datos hijo.

  • $name_modelo (string): El nombre del modelo hijo.

  • $row (array): El array de datos al que se agregará el registro hijo.

Retorna

  • Tipo: array
  • Descripción: El array $row actualizado con el registro hijo generado y asignado en la estructura especificada.

Explicación Detallada

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

Obtención del filtro para el hijo: Se llama al método obten_filtro_para_hijo() de la clase rows para obtener el filtro necesario para recuperar los registros hijos.

Asignación de registros hijo: Se llama a la función asigna_registros_hijo() para aplicar el filtro y asignar los registros hijos al array $row.

Retorno del array actualizado: Se devuelve el array $row actualizado con el registro hijo generado y asignado.

Ejemplos

// Ejemplo: Generar un registro hijo y asignarlo a un array de datos
$data_modelo = [
    'nombre_estructura' => 'hijos',
    'namespace_model' => 'App\\Models'
];
$modelo_base = new ModeloBase();
$name_modelo = 'Hijo';
$row = ['id_padre' => 1];
$resultado_actualizado = genera_registro_hijo($data_modelo, $modelo_base, $name_modelo, $row);
if (is_array($resultado_actualizado)) {
    // Utilizar el array actualizado con el registro hijo generado
    var_dump($resultado_actualizado);
} else {
    // Manejar el mensaje de error
    echo "Hubo un error al generar el registro hijo: ";
    var_dump($resultado_actualizado);
}

Código de la Función

private function genera_registro_hijo(array $data_modelo, modelo_base $modelo_base, string $name_modelo,
                                          array $row):array{

        $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);
        }
        $filtro = (new rows())->obten_filtro_para_hijo(data_modelo: $data_modelo,row: $row);
        if(errores::$error){
            return  $this->error->error(mensaje: "Error filtro",data: $filtro);
        }
        $row = $this->asigna_registros_hijo(filtro: $filtro, modelo_base: $modelo_base,
            name_modelo: $name_modelo, namespace_model: $data_modelo['namespace_model'],
            nombre_estructura: $data_modelo['nombre_estructura'], row: $row);
        if(errores::$error){
            return $this->error->error(mensaje: 'Error al asignar registros de hijo', data: $row);
        }
        return $row;
    }