Laravel update model with unique validation rule for attribute

后端 未结 18 2215
春和景丽
春和景丽 2020-11-27 12:45

I have a laravel User model which has a unique validation rule on username and email. In my Repository, when I update the model, I rev

18条回答
  •  谎友^
    谎友^ (楼主)
    2020-11-27 13:31

    Another elegant way...

    In your model, create a static function:

    public static function rules ($id=0, $merge=[]) {
        return array_merge(
            [
                'username'  => 'required|min:3|max:12|unique:users,username' . ($id ? ",$id" : ''),
                'email'     => 'required|email|unique:member'. ($id ? ",id,$id" : ''),
                'firstname' => 'required|min:2',
                'lastname'  => 'required|min:2',
                ...
            ], 
            $merge);
    }
    

    Validation on create:

    $validator = Validator::make($input, User::rules());
    

    Validation on update:

    $validator = Validator::make($input, User::rules($id));
    

    Validation on update, with some additional rules:

    $extend_rules = [
        'password'       => 'required|min:6|same:password_again',
        'password_again' => 'required'
    ];
    $validator = Validator::make($input, User::rules($id, $extend_rules));
    

    Nice.

提交回复
热议问题