【问题标题】:How to keep unique validation Laravel 5.2如何保持唯一验证 Laravel 5.2
【发布时间】:2016-11-07 22:22:33
【问题描述】:

在我的电子邮件 CreateUserRequest 中,它的验证规则是唯一的,我的 EditUserRequest 也是如此,但它一直说地址已经注册。如何从规则的唯一性中排除我正在更新的用户的电子邮件地址?否则,每次更新用户时,我都必须注册一个新的电子邮件地址。

编辑用户请求:

namespace App\Http\Requests;

use App\Http\Requests\Request;

class EditUserRequest extends Request
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    public function messages()
    {
        return [
            'unique'=>'That email address is already registered',
            'regex'=>'Password must contain at least 1 letter and 1 number'
        ];
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'name'=>'required|min:2|max:50',
            'email'=>'required|email|unique:users,email|max:50'
            //'password'=>'min:8|regex:/[a-zA-Z][0-9]/' NOT IN USE WHILE IN DE
        ];
    }
}

创建用户请求:

namespace App\Http\Requests;

use App\Http\Requests\Request;

class CreateUserRequest extends Request
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    public function messages()
    {
        return [
            'unique'=>'That email address is already registered',
            'regex'=>'Password must contain at least 1 letter and 1 number'
        ];
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'name'=>'required|min:2|max:50',
            'email'=>'required|email|unique:users,email|max:50',
            'password'=>'required'
            //'password'=>'required|min:8|regex:/[a-zA-Z][0-9]/' NOT IN USE WHILE IN DE
        ];
    }
}  

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    您需要更改您的 EditUserRequest 并添加要忽略的当前记录的 ID。

    查看官方文档: https://laravel.com/docs/5.1/validation#rule-unique 在段落中:强制使用唯一规则忽略给定 ID

    类似:

    'email'=>'required|email|unique:users,email,'. $user->id .'|max:50'
    

    【讨论】:

    • 如果你没有依赖注入,你可以使用 Request::input('id') 代替 $user->id。
    • 你也可以使用request()->id
    • 它说 $user 是未定义的。如何授予 $user 的 rules() 访问权限?
    • 使用 Request::input('id') 或 request()->id 也不执行任何操作 - 得到相同的错误,即电子邮件地址已注册。
    • 尝试使用固定 ID 而不是 $user->id ... 一些真实记录,例如 123,如果可以(用于编辑 ID 为 123 的记录),那么您还有其他问题。
    【解决方案2】:

    只需添加$user = User::find($this->users);,然后按照建议添加$user->id;。只是错过了首先找到用户。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-29
      • 1970-01-01
      • 2017-10-11
      • 2016-03-28
      • 2016-12-27
      • 1970-01-01
      • 1970-01-01
      • 2016-12-31
      相关资源
      最近更新 更多