I know this question has been asked many times before but no one explains how to get the id when you’re validating in the model.
'email' => 'unique:users,email_address,10'
My validation rule is in the model so how do I pass the ID of the record to the validation rule.
Here is my models/User
protected $rules_update = [ 'email_address' => 'required|email|unique:users,email_address,'.$id, 'first_name' => "required", 'last_name' => "required", 'password' => "required|min:6|same:password_confirm", 'password_confirm' => "required:min:6|same:password", 'password_current' => "required:min:6" ];
models/BaseModel
protected $rules = array(); public $errors; /* * @data: array, Data to be validated * @rules: string, rule name in model */ public function validate($data, $rules = "rules") { $validation = Validator::make($data, $this->$rules); if($validation->passes()) { return true; } $this->errors = $validation->messages(); return false; }
Advertisement
Answer
One simple solution.
In your Model
protected $rules = [ 'email_address' => 'sometimes|required|email|unique:users', .. ];
In your Controller, action:update
... $rules = User::$rules; $rules['email_address'] = $rules['email_address'] . ',id,' . $id; $validationCertificate = Validator::make($input, $rules);