administrador.base.orm.columnas.campos_no_upd - gamboamartin/administrador GitHub Wiki

campos_no_upd

La función campos_no_upd toma dos arrays como parámetros: $campos_no_upd y $registro. Su objetivo es eliminar del array $registro las claves que se encuentran en el array $campos_no_upd.

Signatura


final public function campos_no_upd(array $campos_no_upd, array $registro): array

Parámetros

  • array $campos_no_upd:
    Un array que contiene los nombres de los campos que no deben ser actualizados en el array $registro.

  • array $registro:
    El array que representa un registro, donde cada clave es el nombre de un campo y cada valor es el valor asociado a ese campo. La función elimina las claves presentes en $campos_no_upd de este array si existen.

Retorna

  • array:
    Devuelve el array $registro modificado, sin las claves que se encontraban en $campos_no_upd.

Explicación Detallada

  1. Iteración y limpieza:

    • La función itera sobre cada elemento de $campos_no_upd.
    • En cada iteración, el valor de $campo_no_upd es limpiado con trim() para eliminar espacios en blanco al inicio y al final.
  2. Validaciones:

    • Si $campo_no_upd es una cadena vacía (''), se genera un error mediante $this->error->error() indicando que el campo no debe estar vacío. Se provee un mensaje de corrección ($fix) para guiar al desarrollador.
    • Si $campo_no_upd es un valor numérico (is_numeric($campo_no_upd)), se genera un error similar, indicando que el campo debe ser un texto.
  3. Eliminación de campos:

    • Si $campo_no_upd existe como clave en $registro, se elimina dicha clave del array $registro utilizando unset().
  4. Retorno:

    • Una vez procesados todos los campos, la función devuelve el array $registro resultante.

Ejemplos

$campos_no_upd = ['status', 'fecha_creacion'];
$registro = [
    'id' => 1,
    'status' => 'activo',
    'nombre' => 'John Doe',
    'fecha_creacion' => '2023-08-29'
];

$registro_actualizado = $this->campos_no_upd($campos_no_upd, $registro);

// Resultado: 
// $registro_actualizado = [
//     'id' => 1,
//     'nombre' => 'John Doe'
// ];

Código de la Función

final public function campos_no_upd(array $campos_no_upd, array $registro): array
    {
        foreach ($campos_no_upd as $campo_no_upd){
            $campo_no_upd = trim($campo_no_upd);
            if($campo_no_upd === ''){
                $fix = 'Se tiene que mandar un campo del modelo indicado';
                $fix .= ' $campo_no_upd[] debe ser un campo ejemplo $campo_no_upd[] = status';
                return $this->error->error(mensaje: 'Error $campo_no_upd esta vacio', data: $campo_no_upd,
                    es_final: true, fix: $fix);
            }
            if(is_numeric($campo_no_upd)){
                $fix = 'Se tiene que mandar un campo del modelo indicado';
                $fix .= ' $campo_no_upd[] debe ser un campo ejemplo $campo_no_upd[] = status';
                return $this->error->error(mensaje: 'Error $campo_no_upd debe ser un texto', data: $campo_no_upd,
                    es_final: true, fix: $fix);
            }
            if(array_key_exists($campo_no_upd, $registro)){
                unset($registro[$campo_no_upd]);
            }
        }
        return $registro;
    }