如何使用数据库和表的枚举来验证请求
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?
更简洁的解决方案是将尺寸存储在单独的表格中,并在原始表格中引用它们。这样你就可以使用“正常”的验证东西了。
【讨论】:
以上是关于如何使用数据库和表的枚举来验证请求的主要内容,如果未能解决你的问题,请参考以下文章