Yêu cầu thg 12 26, 2019 6:47 SA 2309 0 5
  • 2309 0 5
+1

Hỏi về Validation unique laravel khi update bài viết ạ

Chia sẻ
  • 2309 0 5

Chào mọi người ạ, em đang gặp 1 vấn đề là khi edit 1 post, thi validation của em có check unique title trong database và khi em không thay đổi gì title vẫn để title cũ mà update là nó báo đã tồn tại. Cho em hỏi lỗi này fix ntn ạ? Em viết validation trong thư mục Request riêng ạ. Mong mọi người giúp đỡ

Avatar Hải Hà @HaiHaChan
thg 12 26, 2019 6:49 SA

bạn show code phần update được k ạ?

5 CÂU TRẢ LỜI


Đã trả lời thg 12 26, 2019 6:49 SA
+5

Bạn vẫn dùng unique rule như này nhé:

'title' => "unique:posts,title,$postId,id"

Thì nó sẽ vẫn áp dụng rule unique nhưng sẽ bỏ qua bài viết có id là $postId nhé bạn

Chia sẻ
Đã trả lời thg 12 26, 2019 6:51 SA
+3

bạn có thể dùng cách này

public function rules()
{
       $id = $this->route('post')->id; // lấy id bài post muốn update
        return [
            'title' => "unique:posts,title,{$id},id"
         ]
}
Chia sẻ
Đã trả lời thg 12 26, 2019 6:54 SA
+2

use Illuminate\Validation\Rule;

Validator::make($data, [ 'posts' => [ 'required', Rule::unique('posts')->ignore($postId), ], ]);

Bạn thử dùng hàm ignore() xam sao chi tiết bạn có thể tham khảo: https://laravel.com/docs/6.x/validation#rule-unique

Chia sẻ
Đã trả lời thg 12 28, 2019 2:14 CH
0

Bạn làm như này nhé:

/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
     $id = $this->route('certificate')->id;

     return [
        'title' =>"unique:potsts,title,$id,id",
     ];
}
Chia sẻ
Đã trả lời thg 12 26, 2019 7:08 SA
-5

Cám ơn mọi người nhìu em đã làm được rồi. Thanks nhìu ạ!

Chia sẻ
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí