如何使用数据库中指定的条件验证输入数据?
假设,我有一个数据库,用户名中最多支持255个字符。现在,在验证输入数据时,而不是在硬编码用户名中允许的最大字符数(比如说80)时,我该如何去将最大允许的字符数存储在设置表中,然后使用该值来验证输入数据。
基本上,我想让管理员可以选择在管理面板中配置允许的最大字符数。
是否有任何方法可以实现,而不必使用自定义验证规则?
编辑: 假设我们有一个char(255)类型的数据库字段来存储电子邮件。管理员不一定要允许电子邮件长度超过30个字符,在这种情况下,他可以配置一个设置以允许电子邮件中最多字符个数,该设置值将存储在数据库中,并将在以后使用验证目的。
答案 0 :(得分:0)
也许您可以使管理员可以定义验证规则本身。
我想您有一个带有验证规则的数据库表,如下所示:
validation_rules 表示例结构:
id | INT
field_name | VARCHAR(50)
field_rules | VARCHAR(50)
...other fields you may need...
因此,当您必须对其进行验证时,可以执行以下操作:
$rules = ValidationRule::whereIn('field_name', array_keys($request->all()))
->pluck('field_rules', 'field_name');
$validator = Validator::make($request->all(), $rules);
答案 1 :(得分:0)
如果您不想在PHP中构建一个根据长度(取决于数据库中的内容)来验证长度的函数,则可以通过插入来验证长度。
INSERT
INTO
users(username)(
SELECT
'".$_POST[' username']."'
FROM
settings
WHERE
settings.field = 'max_username'
AND LENGTH('".$_POST[' username']."')<= settings.data
)
Ofc您将不会使用$ _POST ...