Check unique in laravel
Mình đang edit dữ liệu và trong controller có validate dữ liệu như sau:
$this->validate($r,[
'phone'=>'unique:daily,phone,'.$r['id'], // unique:tintuc,title - Không cho phép trùng tên //
],[
'phone.unique'=>'Số điện thoại này đã được sử dụng',
]);
Dữ liệu phone ko bắt buộc nhập vì thế sẽ có rất nhiều người ko có phone nên khi validate mình ko nhập phone nó sẽ áo lỗi ( số đt này đã đc sử dụng) nó báo lỗi này là đúng logic nhưng lại không đáp ứng yêu cầu . Vậy cho mình hỏi có cash nào giải quyết vấn đề này ? Thanks!
3 CÂU TRẢ LỜI
Thêm vào đâu bạn nhỉ, nói rõ hơn được không.
@tinhtn89 'phone' => 'nullable|unique:.......' xem sao
Thank You, Nullable đã hoạt động tốt.
Mình nghĩ là trường hợp của bạn có thể dùng rule sometimes
như sau:
Validating When Present In some situations, you may wish to run validation checks against a field only if that field is present in the input array. To quickly accomplish this, add the sometimes rule to your rule list:
$v = Validator::make($data, [
'email' => 'sometimes|required|email',
]);
In the example above, the email field will only be validated if it is present in the $data array.
Laravel docs: https://laravel.com/docs/6.x/validation#conditionally-adding-rules
@tinhtn89 Như bạn @buihieubthc2rb là ổn đấy bạn, để sometimes
thì Laravel sẽ không validate khi người dùng submit phone rỗng. Nên bạn sửa thành như này nhé:
'phone'=>'sometimes|unique:daily,phone,'.$r['id'],
Thêm Sometimes vào vẫn báo lỗi đã tồn tại.
@tinhtn89 lỗi đang báo vs trường sotaikhoan
cái này cũng muốn như trường phone
à bạn?
à trường phone
đã pass chưa bạn nhỉ?
Phone là mình ví dụ thôi, còn chính thức nó là thằng sotaikhoan này này. chưa pass thằng nào cả.
@tinhtn89 bạn thử để thành nullable
như các bạn ở dưới xem như nào:
'phone'=>'nullable',
Thằng sometimes nó chỉ check khi mình có bắn cái name của field đấy lên hay không thôi, nếu bắn lên thì nó sẽ check, còn k bắn nó k check