administrador.base.orm.modelo.limpia_campos_sin_bd - gamboamartin/administrador GitHub Wiki
limpia_campos_sin_bd
La función limpia_campos_sin_bd
es una función privada que se encarga de eliminar del array $registro
aquellos campos que no están definidos como atributos en el modelo de base de datos. Esto asegura que solo los campos relevantes y válidos sean considerados para operaciones posteriores, como inserciones o actualizaciones en la base de datos.
Signatura
private function limpia_campos_sin_bd(array $registro): array
Parámetros
array $registro
:
Un array que contiene los datos del registro que se va a procesar. Cada clave representa el nombre de un campo y cada valor es el dato asociado a ese campo.
Retorna
array
:
Retorna el array$registro
limpio, es decir, sin los campos que no existen en los atributos del modelo. En caso de error, retorna un array de error generado por$this->error->error()
.
Explicación Detallada
-
Validación de nombres de campos:
- La función itera sobre cada par clave-valor en
$registro
, donde la clave es el nombre del campo ($campo
) y el valor es el dato asociado a ese campo. - Se utiliza
trim()
para eliminar espacios en blanco al inicio y final del nombre del campo. - Si un campo queda vacío después de aplicar
trim()
, la función retorna un error indicando que el campo está vacío.
- La función itera sobre cada par clave-valor en
-
Verificación contra atributos del modelo:
- Se convierte la propiedad
$this->atributos
del modelo en un array. - Se verifica si cada campo en
$registro
existe como clave en el array de atributos. - Si un campo no existe en los atributos, se elimina del array
$registro
.
- Se convierte la propiedad
-
Retorno de datos:
- Si todos los campos han sido validados y filtrados correctamente, se retorna el array
$registro
con solo los campos que existen en los atributos del modelo.
- Si todos los campos han sido validados y filtrados correctamente, se retorna el array
Ejemplos
$registro = [
'nombre' => 'John Doe',
'email' => '[email protected]',
'campo_no_bd' => 'valor_irrelevante'
];
$resultado = $this->limpia_campos_sin_bd($registro);
// Resultado esperado:
// Un array limpio sin el campo 'campo_no_bd', siempre que 'nombre' y 'email' existan en los atributos del modelo.
Código de la Función
private function limpia_campos_sin_bd(array $registro): array
{
foreach ($registro as $campo=>$value){
$campo = trim($campo);
if($campo === ''){
return $this->error->error(mensaje: "Error campo esta vacio", data: $registro, es_final: true);
}
$attrs = (array)$this->atributos;
if(!array_key_exists($campo, $attrs)){
unset($registro[$campo]);
}
}
return $registro;
}