Validating a Unique Slug on Update in Laravel 5
Try to modify your rule like following(in form request class):
public function rules(){ return [ 'name' => 'required,min:3', 'slug' => 'required|alpha_dash|unique:categories,slug,'.$this->id') ];}
It works for me.
In unique rule you may specify id you want to ignore.
You can create 2 separate request (one for create and one for update), but you can do it also this way checking if if is set(I assume your update url looks like /questions/2
):
public function rules(){ $rules = [ 'name' => 'required|min:3', 'slug' => ['required', 'alpha_dash'] ]; $rule = 'unique:questions'; $segments = $this->segments(); $id = intval(end($segments)); if ($id != 0) { $rule .= ',slug,' . $id; } $rules['slug'][] = $rule; return $rules; }}
If you must have the ability to update a slug, projects I've worked on usually require it is not editable after creation, then you can use laravel's built in rule to ignore a certain record on the table by primary key.
$rules['slug'] = "required|unique:questions,slug,{$id}";
http://laravel.com/docs/5.0/validationsee "Forcing a unique rule to ignore a given ID"