【发布时间】:2017-07-28 14:55:11
【问题描述】:
我使用 Laravel 5.3 的验证如下:
在我的模型中:
public static $validation = [
'name' => 'required',
'username' => 'required|alpha|unique:companies',
'email' => 'required|email|unique:companies',
];
在我的控制器中,我在创建新项目或编辑项目时发布到相同的 CompanyController@dataPost 方法:
public function dataPost(Request $request) {
// First validation
$this->validate($request, Company::$validation);
$id = $request->id;
if ($id > 0) {
// Is an edit!
$company = Company::find($id);
$company->update($request->all());
$company->save();
Session::flash('messageclass', 'success');
Session::flash('message', trans('companies.editedsuccessfully'));
} else {
// Is a create
$company = new Company($request->all());
$company->save();
Session::flash('messageclass', 'success');
Session::flash('message', trans('companies.createdsuccessfully'));
}
return redirect()->route('companyindex');
}
唯一验证在我创建新项目时正常工作,但在编辑项目时会导致错误(因为它将用户名标记为已存在)。
知道如何避免这种情况吗?即使在编辑中,我仍然希望确保数据在更改时是唯一的,但如果值与以前相同,则忽略验证。
我知道我可以手动执行此操作,但我想知道是否有内置方法可以避免这种情况。
谢谢!
【问题讨论】:
标签: php laravel laravel-5.3