现场UNIQUE(已采用)编辑?

时间:2017-01-24 13:45:42

标签: laravel laravel-5 laravel-5.2

我在编辑用户时遇到验证问题。因此,当我编辑我收到消息,该名称已被采取。我怎样才能解决这个问题?因为该名称属于该用户。所以我需要再次更改名称,以便我可以编辑我的用户。

    if($user->business_user){
      $this->validate($request,[
        'company_name' => 'required|unique:business_users'
      ]);
    }

我的观点:

<div class="col-md-6 col-sm-6 col-xs-12">
   <div class="form-group" v-bind:class="{ 'has-error': basic_errors.company_name }">
         <label class="form_title">COMPANY NAME</label>
         <input type="text" name="company_name" v-model="basic_credentials.company_name" value="{{ is_value_empty($user->business_user->company_name) }}" class="form_input">
         <span class="help-block" id="helpBlock2" v-show="basic_errors.company_name">@{{ basic_errors.company_name }}</span>
   </div>
</div>

2 个答案:

答案 0 :(得分:2)

  

有时,您可能希望在唯一检查期间忽略给定的ID。例如,考虑一个&#34;更新配置文件&#34;屏幕,包括用户的姓名,电子邮件地址和位置。当然,您需要验证电子邮件地址是否唯一。但是,如果用户只更改名称字段而不是电子邮件字段,则不希望抛出验证错误,因为用户已经是电子邮件地址的所有者。

     

为了指示验证者忽略用户的ID,我们将使用Rule类来流畅地定义规则。在此示例中,我们还将验证规则指定为数组,而不是使用|用于划分规则的字符:

Validator::make($data, [
    'email' => [
        'required',
        Rule::unique('users')->ignore($user->id),
    ],
]);

https://laravel.com/docs/5.3/validation#rule-unique

答案 1 :(得分:2)

您可以查看validation

if($user->business_user){
  $this->validate($request,[
    'company_name' => 'required|unique:business_users,'.$user->id
  ]);
}