当我创建一个字段时,我使用以下验证。
$this->validate($request, [
'client_name' => 'required',
'contact_name' => 'required',
'email' => 'required|unique:clients|email',
]);
现在我尝试用PUT编辑它。我尝试以下
$this->validate($request, [
'client_name' => 'required',
'contact_name' => 'required',
'email' => 'required|unique:clients|email',
]);
$client = \App\Client::find($id);
$client->client_name = $request->client_name;
$client->contact_name = $request->contact_name;
$client->email = $request->email;
$client->slug = str_slug($request->client_name, '_');
$client->save();
问题 - 如果我删除Unique属性,则可以将其设置为与另一条记录相同的电子邮件地址。如果我把它保存在记录中就不会保存。
有解决方法吗?
答案 0 :(得分:1)
Laravel中唯一验证器的语法(here)
独特:表,列,除了,idColumn
因此,在您的代码中,除了应用unique之外,您需要提及它所需的ID。
$this->validate($request, [
'client_name' => 'required',
'contact_name' => 'required',
'email' => 'required|unique:clients,client_email,clientid,'.$id.'|email',
]);
$client = \App\Client::find($id);
$client->client_name = $request->client_name;
$client->contact_name = $request->contact_name;
$client->email = $request->email;
$client->slug = str_slug($request->client_name, '_');
$client->save();
也可以在laracast(here)
中引用一些讨论我希望它会对你有所帮助。