我有一个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!');
}
答案 0 :(得分:1)
您需要修改<filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" preserveOriginal="1" types="wdfftypes.txt" />
规则以排除您正在编辑的记录。
而不是
unique
你应该使用:
'email' => 'unique:users|email|max:255',
答案 1 :(得分:0)
在验证规则中,您可以设置&#39; required&#39;,这必须有所帮助。