首页 文章

Laravel配置文件更新,电子邮件唯一:用户

提问于
浏览
1

我是Laravel的新手 . 我尝试制作 Profiles 更新页面...一切正常但如果我尝试应用规则来设置电子邮件字段唯一:用户我有问题当用户尝试更新例如名称而不想要更改电子邮件 .

public function rules()
    {
        return [
          'name' => 'required|max:255',
          'email' => 'required|email|max:255|unique:users',
        ];
    }

我想限制该用户使用其他人正在使用的相同电子邮件...但我想忽略,如果这是该用户配置文件中已有的相同电子邮件,他不想更改它 .

public function updateData(UpdateDataRequest $ request){

DB::table('users')
    ->where('id', Auth::user()->id)
    ->update(array('email' => $request->email, 'name' => $request->name));

return redirect('panel');

}

怎么做对了?

1 回答

  • 8

    这种确切的情况在文档中用作示例 .

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

    强制唯一规则忽略给定ID:有时,您可能希望在唯一检查期间忽略给定ID . 例如,考虑一个“更新配置文件”屏幕,其中包括用户的名称,电子邮件地址和位置 . 当然,您需要验证电子邮件地址是否唯一 . 但是,如果用户仅更改名称字段而不更改电子邮件字段,则不希望抛出验证错误,因为用户已经是电子邮件地址的所有者 . 如果用户提供已由其他用户使用的电子邮件地址,您只想抛出验证错误 . 要告诉唯一规则忽略用户的ID,您可以将ID作为第三个参数传递:'email'=>'unique:users,email_address,' . $ user-> id
    如果您的表使用除id之外的主键列名称,您可以将其指定为第四个参数:'email'=>'unique:users,email_address,' . $ user-> id . ',user_id'

相关问题