Laravel如何验证具有唯一JSON字段类型?

sczxawaw  于 2023-02-05  发布在  其他
关注(0)|答案(2)|浏览(163)

我在Laravel 5.7 API和Mariadb 10.3上有一个POST端点,我用postman测试我的路线,问题就在这里。我想发送一个同类对象的数组,如下所示:

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

在我的数据库。我有商店表和名称字段为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",
busg9geu

busg9geu1#

写入唯一验证规则的第二个参数引用了数据库表中将测试唯一规则的列,恐怕您在那里写入的语法无效。
我的猜测是,您需要创建一个自定义验证规则来处理这种特殊情况。

9jyewag0

9jyewag02#

在我的数据库中有一个“optios”表,我将验证json字段中的一个属性,名称为“details”。为了完成这项工作,我在FormRequest的规则函数中写入了这一行:

'slug' => ['unique:options,details->slug']

“slug”是我的表格的输入“unique”是laravel的关键词,表示不重复“options”是我的表格“details-〉slug”是详情列中的属性“slug”
当重复插入输入=〉laravel说我:“子弹已经被拿走了。”

相关问题