有没有办法将以下代码压缩成一个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'))]);
}
我想摆脱更新密码的条件语句,因为我现在自动使用mutator bcrypt
。有没有类似request()->allNotNull()
的方法?
答案 0 :(得分:9)
你可以这样做:
$user = User::where('id', $id)->update(request()->all());
也许您还想添加->take(1)
。
<强>更新强>
在评论中你说你想要摆脱空白的领域。使用array_filter()
:
array_filter($request->all());
如果未提供回调,则将删除等于
false
的所有数组条目。
答案 1 :(得分:1)
你可以试试这个。如果密码为空,将过滤掉密码。
$input = collect(request()->all())->filter()->all();
$user = User::where('id', $id)->update($input);