laravel 使用唯一规则时出现 jsValidation 错误

laravel jsValidation error while using unique rule

我在使用 JsValidation 的 CreateRequest 中使用 laravel 唯一规则时遇到问题。这是请求代码。

class CreateProductRequest extends Request
{

    public function rules()
    {
        return [

            'factory_id' => 'required',
            'category' => 'required',
            'product_code' => 'required|unique:product',
            'un_code' => 'required|unique:product',
            'hs_code' => 'required|unique:product',
            'section' => 'required',
            'status' => 'required',
            'product_type' => 'required',
            'classification' => 'required',
            'main_product_market' => 'required',
            'custodian_user_id' => 'required'

        ];
    }
}

当我删除唯一字段时,一切正常。但是使用独特的规则我会得到 500 服务器错误如下

在控制台中报告

值得注意的是,如果我不使用 JSValidation Laravel 将不会产生任何错误

更新:

我在调试栏中收到此错误

'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '' for key 'name'' in /.../demo/vendor/laravel/framework/src/Illuminate/Database/Connection.php:408:

您正在尝试为每个项目使用相同的唯一字段:

'product_code' => 'required|unique:product',
'un_code' => 'required|unique:product',
'hs_code' => 'required|unique:product',

我猜 product 是你的 table,而不是字段。

我想这就是你想要的:

'product_code' => 'required|unique:product,product_code',
'un_code' => 'required|unique:product,un_code',
'hs_code' => 'required|unique:product,hs_code',

这将要求这些字段中的每一个都是唯一的。

https://laravel.com/docs/5.2/validation#rule-unique

问题后来解决了。我的问题是我没有对 CreateProductRequest 进行类型提示,而是使用 Request.

我应该得到声明规则的扩展请求 class 的类型提示。