我的应用程序有问题。我有一个CRUD,我可以在其中选择一种产品并为其分配营养,目前我只有5种果仁糖。我正在正确地注册营养素及其价值,问题是当我重复注册一种坚果时,没有向用户显示一个错误,说坚果已经存在,而是尝试在银行中注册该棒。
我尝试使用唯一性,因为它禁止我尝试注册的任何营养,即使该产品是新产品。
如何检查该营养素是否已经存在?
我正在使用背包包。
public function rules(){
return [
'nutrient_id' => 'required',
'portion' => 'required|numeric',
'amount' => 'required|numeric',
];
}
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '2-62' for key 'product_nutritional_facts_nutrient_id_product_id_unique' (SQL: insert into `product_nutritional_facts` (`nutrient_id`, `portion`, `amount`, `product_id`, `updated_at`, `created_at`) values (2, 11, 11, 62, 2018-12-14 22:22:41, 2018-12-14 22:22:41))
答案 0 :(得分:1)
您需要存储和更新上的单独请求。请查看手册:https://laravel.com/docs/5.7/validation
实体店:
public function rules(){
$id = Input::all()['id'];
return [
'nutrient_id' => 'required|unique:product_nutritional_facts,nutrient_id,NULL,id,deleted_at,NULL' . $id, // remove deleted_at,NULL if you don't use soft deletes
'portion' => 'required|numeric',
'amount' => 'required|numeric',
];
}
更新时:
public function rules(){
$id = Input::all()['id'];
return [
'nutrient_id' => 'required|unique:product_nutritional_facts,nutrient_id,' . $id,
'portion' => 'required|numeric',
'amount' => 'required|numeric',
];
}