administrador.base.orm.inicializacion.init_upd - gamboamartin/administrador GitHub Wiki
init_upd
La función init_upd
es una función pública que inicializa el proceso de actualización de un registro en un modelo. La función ajusta los campos que no deben ser actualizados, valida el registro a actualizar, y devuelve un objeto stdClass
con los datos procesados. Si alguna validación falla, retorna un array de error detallado.
Signatura
final public function init_upd(int $id, modelo $modelo, array $registro, bool $valida_row_vacio = true): array|stdClass
Parámetros
-
int $id
:
El ID del registro que se va a actualizar. Debe ser un valor entero mayor que 0. -
modelo $modelo
:
Una instancia de la clasemodelo
que representa el modelo en el cual se va a realizar la actualización. Este objeto debe tener propiedades comocampos_no_upd
,registro_upd
, yregistro_id
. -
array $registro
:
Un array que contiene los datos del registro que se va a actualizar. Cada clave representa el nombre de un campo y cada valor es el dato asociado a ese campo. -
bool $valida_row_vacio
(opcional):
Un valor booleano que indica si se debe validar que$registro
no esté vacío. Si estrue
, se realiza la validación; si esfalse
, se omite. El valor por defecto estrue
.
Retorna
array|stdClass
:
Retorna un objetostdClass
que contiene los datos validados y listos para la actualización (registro_upd
eid
). En caso de error, retorna un array de error generado por$this->error->error()
.
Explicación Detallada
-
Ajuste de campos no actualizables:
- La función invoca
campos_no_upd
desde una instancia de la clasecolumnas
para remover o ajustar los campos que no deben ser actualizados según lo definido en$modelo->campos_no_upd
. - Si ocurre un error al ajustar los campos, se retorna un array de error.
- La función invoca
-
Asignación de datos en el modelo:
- Se asigna el array de registro procesado a la propiedad
registro_upd
del modelo. - Se asigna el ID a la propiedad
registro_id
del modelo.
- Se asigna el array de registro procesado a la propiedad
-
Validación del registro:
- Se llama a la función
valida_upd_base
desde una instancia de la clasevalidaciones
para validar el registro antes de la actualización, utilizando el ID y los datos procesados. - Si ocurre un error durante la validación, se genera un mensaje de error detallado que incluye el registro original y procesado, y se retorna un array de error.
- Se llama a la función
-
Retorno de datos:
- Si todas las validaciones son exitosas, se retorna un objeto
stdClass
con las propiedadesregistro_upd
eid
, que contienen los datos listos para ser actualizados en el modelo.
- Si todas las validaciones son exitosas, se retorna un objeto
Ejemplos
```php
$id = 10;
$modelo = new modelo();
$registro = [
'nombre' => 'John Doe',
'email' => '[email protected]'
];
$resultado = $this->init_upd($id, $modelo, $registro);
// Resultado esperado:
// Un objeto stdClass con las propiedades `registro_upd` e `id` si todo es correcto.
// Un array de error si ocurre algún problema en el proceso.
Código de la Función
final public function init_upd(
int $id, modelo $modelo, array $registro, bool $valida_row_vacio = true): array|stdClass
{
$registro_original = $registro;
$registro = (new columnas())->campos_no_upd(campos_no_upd: $modelo->campos_no_upd, registro: $registro);
if(errores::$error){
return $this->error->error(mensaje: 'Error al ajustar camp no upd',data: $registro);
}
$modelo->registro_upd = $registro;
$modelo->registro_id = $id;
$valida = (new validaciones())->valida_upd_base(id:$id, registro_upd: $modelo->registro_upd,
valida_row_vacio: $valida_row_vacio);
if(errores::$error){
$datos = serialize($registro);
$registro_original = serialize($registro_original);
$mensaje = "Error al validar datos del modelo ";
$mensaje .= $modelo->tabla." del id $id";
$mensaje .= " registro procesado $datos";
$mensaje .= " registro original $registro_original";
return $this->error->error(mensaje: $mensaje, data: $valida);
}
$data = new stdClass();
$data->registro_upd = $modelo->registro_upd;
$data->id = $modelo->registro_id;
return $data;
}