【问题标题】:Laravel how to validation with unique JSON fields type?Laravel 如何使用唯一的 JSON 字段类型进行验证?
【发布时间】:2019-07-06 22:12:09
【问题描述】:

我的 Laravel 5.7 API 和 Mariadb 10.3 上有一个 POST 端点,我使用邮递员来测试我的路由,这就是问题所在。我想发送一个同类型对象的数组,像这样:

{  
   "Shops":[  
   {
     "name": {
        "en":"ShopEng",
        "es":"ShopESP"
      },
    "code": "0891"
   }
   ]
}

在我的数据库中。我有 Shops 表和名称字段作为 JSON 类型。

{"en":"TestEng","es":"TestESP"}

在我的请求中。我也尝试了简单但不起作用的方法。

public function rules()
    {
        return array(
            'Shops'         => 'required|array',
            'Shops.*.name.en' => 'required|unique:shops,name->en',
            'Shops.*.name.es' => 'required|unique:shops,name->es',
            'Shops.*.code'        => 'required|integer'
        );

    }

有消息。

"message": "Method Illuminate\\Validation\\Validator::validateUnique,shops,name>en does not exist.",
"exception": "BadMethodCallException",
"file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Validation/Validator.php",

【问题讨论】:

  • 能否提供错误信息?
  • 您是否传递数组Shops?因为你使用Shop 没有's'
  • @Shaikot 非常感谢。我给你加了。
  • 我不确定,你可以试试 name[en] 而不是 name->en?
  • @Shaikot 我试过了,但还是不行。带消息。 "message": "方法 Illuminate\\Validation\\Validator::validateUnique,shops,name[en] 不存在。",

标签: laravel laravel-5 laravel-5.7 laravel-validation


【解决方案1】:

second parameter written in the unique validation rule 指的是数据库表中将测试唯一规则的列,恐怕你在那里写的语法无效。

我的猜测是,您将需要创建一个 custom validation rule 来处理这种特殊情况。

【讨论】:

    猜你喜欢
    • 2019-03-29
    • 2023-04-09
    • 2022-01-12
    • 2019-03-24
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多