如何使用数据库和表的枚举来验证请求

Posted

技术标签:

【中文标题】如何使用数据库和表的枚举来验证请求【英文标题】:How to verify request with enum of database and table 【发布时间】:2021-09-28 04:33:09 【问题描述】:

所以我正在开发一个网页,人们可以在其中购买一些 T 恤,他们可以选择颜色、尺寸和数量,问题是,用户可以在 html 源上编辑尺寸和颜色,所以我需要验证大小是否与数据库上的枚举匹配,以及颜色是否与表上可用的颜色匹配!我需要在请求验证时执行此操作,到目前为止我有这个:

    return [
        'tam' => 'required',
        'color' => 'required',
        'quantity' => 'required|numeric|min:1|max:20',
    ];

页面有这个:

数据库枚举有这个:

将“tamanho”字段作为枚举,如何验证网页上的“tamanho”是否是数据库中的枚举值之一

【问题讨论】:

这能回答你的问题吗? Laravel IN Validation or Validation by ENUM Values 也可以参考这个问题***.com/questions/43317806/… @Abishek 很好,但是我怎样才能动态地做到这一点,所以如果数据库发生变化,这将更改为 我需要动态检查枚举值 恐怕没有好的方法可以做到这一点,除非您创建一个自定义规则,使用查询生成器来查询INFORMATION SCHEMA 并动态获取枚举值并使用它的规则。这只是你不想要的开销。 【参考方案1】:

您的问题是 ENUM 是“邪恶”的原因之一。 :) http://komlenic.com/244/8-reasons-why-mysqls-enum-data-type-is-evil/

保留 ENUM,解决方法是查询 ENUM 值。请参阅: How can I get enum possible values in a MySQL database?

更简洁的解决方案是将尺寸存储在单独的表格中,并在原始表格中引用它们。这样你就可以使用“正常”的验证东西了。

【讨论】:

以上是关于如何使用数据库和表的枚举来验证请求的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PHPmyAdmin 找出数据库和表的字符集?

如何查询 BigQuery 视图和表的依赖关系?

经典解密数据库和表的创建

我在 Hive 上有一个包含许多数据库和表的数据库,现在我该如何搜索并找到感兴趣的列?

如何在 Joi 字符串验证中使用枚举值

如何导出mysql数据库和表的所有数据