Laravel PUT在一个独特的,必需的领域

时间:2017-05-17 10:57:04

标签: php forms validation laravel-5 put

当我创建一个字段时,我使用以下验证。

 $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属性,则可以将其设置为与另一条记录相同的电子邮件地址。如果我把它保存在记录中就不会保存。

有解决方法吗?

1 个答案:

答案 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

中引用一些讨论

我希望它会对你有所帮助。