【发布时间】:2016-03-03 07:58:31
【问题描述】:
我有一个 laravel 表单来更新数据库中现有用户的信息,但如果该表单中的字段为空白,我不希望它更新数据库中的该记录。就像现在一样,如果该字段为空白并且提交了表单,它会传递该空白输入并删除数据库中的记录。
下面是编辑用户信息然后执行数据库更新的功能。我目前将 Request::old('...') 附加到电子邮件中,但由于验证是 'unique:users',它会给出错误 'email is taken'。
谢谢,
public function postEdit(Request $request)
{
$this->validate($request, [
'email' => 'unique:users|email|max:255',
'password' => 'min:6',
'confirm_password' => 'same:password',
'about_me' => 'max:500',
]);
Auth::user()->update([
'email' => $request->input('email'),
'password' => bcrypt($request->input('password')),
'confirm_password' => bcrypt($request->input('confirm_password')),
'about_me' => $request->input('about_me'),
]);
return redirect()->route('profile.edit')->with('info', 'You have updated your profile!');
}
【问题讨论】:
-
如果用户删除信息,则表示他希望该字段为空白。没有?
-
嗯,他们需要系统中的电子邮件地址。因此,选项将是 (1) 将该字段设为必填,但如果该电子邮件与该用户的当前数据库记录相同,则验证不会出错,或者 (2) 允许该字段为空白,并且,如果是这样,只需保留当前数据库记录,不要将其设置为 ' '。
-
唯一接受第三个参数。在该参数中传递用户 ID,它会检查唯一的电子邮件,但相关用户中的字段将被跳过。
标签: laravel laravel-5 laravel-validation