Php 拉威尔提出了一个独特的,必需的文件

Php 拉威尔提出了一个独特的,必需的文件,php,forms,validation,laravel-5,put,Php,Forms,Validation,Laravel 5,Put,创建字段时,我使用以下验证 $this->validate($request, [ 'client_name' => 'required', 'contact_name' => 'required', 'email' => 'required|unique:clients|email', ]); 现在,当我试图用PUT编辑它时。我尝试以下方法 $this->validate($request, [ 'c

创建字段时,我使用以下验证

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


有解决办法吗?

Laravel中唯一验证器的语法

唯一:表、列、除、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中的一些讨论


我希望它能帮助您。

那么您是否要保存非唯一电子邮件?