Laravel Backpackl-要求独特的产品和营养

时间:2018-12-15 00:25:27

标签: laravel backpack-for-laravel

我的应用程序有问题。我有一个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))

1 个答案:

答案 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',
    ];
}