Hỏi Về sữ dụng vallidate trong laravel.
khi mình sữ dụng unique để thêm dữ liệu thông báo lỗi đã tồn tại. Nhưng giả sữ mình update bảng ví dụ như: bảng Sản phẩm trong đó có Tên sản phẩm, giá tiền,số lượng trong khi đó Tên sản phẩm mình đã unique cho nó là duy nhất. mình chỉ update giá tiền thì làm thế nào. các cao nhân cho em gợi ý cách làm với ạ. thank for watching
4 CÂU TRẢ LỜI
Bạn vẫn dùng unique
rule nhưng thay vì dùng mặc định là:
'name' => "unique:products,name,$productId,id"
Thì nó sẽ vẫn áp dụng rule unique
nhưng sẽ bỏ qua sản phẩm có id là $productId
nhé bạn
Theo mình thì cách đơn giản nhất là bạn sẽ làm 2 file validate khi tạo và khi update riêng, như thế thì sẽ có thể chính xác hơn nếu bạn cần validate nhiều trường và có nhiều trường hợp xảy ra.
và để except 1 bản ghi nào đó thì bạn thử cái này nhé https://laravel.com/docs/6.x/validation#rule-unique
use Illuminate\Validation\Rule;
Validator::make($data, [
'email' => [
'required',
Rule::unique('users')->ignore($user->id),
],
]);
Bạn có thể làm theo như sao:
$id = $this->route('product')->id;
return [
'name' => "unique:products,name,$id,id",
];
Cảm ơn bạn.