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',
这将要求这些字段中的每一个都是唯一的。
问题后来解决了。我的问题是我没有对 CreateProductRequest
进行类型提示,而是使用 Request
.
我应该得到声明规则的扩展请求 class 的类型提示。
我在使用 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',
这将要求这些字段中的每一个都是唯一的。
问题后来解决了。我的问题是我没有对 CreateProductRequest
进行类型提示,而是使用 Request
.
我应该得到声明规则的扩展请求 class 的类型提示。