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

  1. 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.
  2. 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.
  3. 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.

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