¿Hay alguna forma de condensar el siguiente código en una sola update() ?:
$this->validate(request(), [ 'name' => 'required|string|max:255', 'email' => 'required|string|email|max:255|unique:users,email,'.$id, 'password' => 'nullable|string|min:6|confirmed', 'timezone' => 'required|timezone', ]); $user = User::findOrFail($id); $user->update(request()->all()); if (!empty(request()->input('password'))) { $user->update(['password' => bcrypt(request()->input('password'))]); } Quiero deshacerme de la declaración condicional para actualizar la contraseña porque ahora estoy usando un mutador para bcrypt automáticamente. ¿Existe un método como request()->allNotNull() ?
Puedes hacerlo:
$user = User::where('id', $id)->update(request()->all()); Tal vez también quieras agregar ->take(1) .
Actualizar
En los comentarios, ha dicho que desea deshacerse de los campos vacíos. Utilice array_filter() :
array_filter($request->all());Si no se proporciona una devolución de llamada, se eliminarán todas las entradas de la matriz que sean iguales a
false.
Puedes probar esto. La contraseña se filtrará si la contraseña está vacía.
$input = collect(request()->all())->filter()->all(); $user = User::where('id', $id)->update($input);