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