У меня есть реквест, у которого в правилах прописано:
public function rules()
{
return [
'title' => 'unique:posts,title|min:10|max:200|required',
'description' => 'required|min:20',
'image' => 'image|max:1024',
];
}
При создании поста конечно проблем нет, а когда я передаю этот же реквест в экшн обновления поста (и меняю допустим только описание поста, или меняю картинку не трогая title), то мне Laravel отвечает
The title has already been taken.
. И как бы не поспоришь, потому что действительно такой title есть в базе данных, но только у этого поста. Как Ларавелу дать понять, что валидатор unique должен реагировать на все записи, кроме нынешней? Вот экшн
public function update(RequestCreatePost $request, $id) {
$post = Post::findOrFail($id);
if($request->hasFile('image')) {
$image = new Image;
$image->image = $request->file('image');
$post->photo = $image->save('blog');
}
$post->user_id = Auth::id();
if($post->fill($request->except('image')) && $post->save()) {
return redirect()->back();
}
}