如何根据数据库中指定的条件验证输入数据?
假设,我有一个数据库可以支持用户名中最多255个字符。现在,在验证输入数据时,不是对用户名中允许的最大字符数(比如80(进行硬编码,而是如何在设置表中存储最大允许字符数,然后使用该值来验证输入数据。
基本上,我想让管理员从管理面板中选择配置允许的最大字符数。
有没有任何方法可以在不使用自定义验证规则的情况下实现它?
编辑:比方说,我们有一个char(255(类型的数据库字段来存储电子邮件。管理员可能不一定希望允许长度超过30个字符的电子邮件,在这种情况下,他可以配置一个设置,以允许电子邮件中的最大字符数,设置的值将存储在数据库中,并用于未来的验证目的。
也许您可以让管理员自己定义验证规则。
我想您有一个包含验证规则的数据库表,类似于以下内容:
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);
如果你不想在PHP中构建一个根据你在数据库中输入的内容来验证长度的函数,你可以通过插入来验证长度。
INSERT
INTO
users(username)(
SELECT
'".$_POST[' username']."'
FROM
settings
WHERE
settings.field = 'max_username'
AND LENGTH('".$_POST[' username']."')<= settings.data
)
Ofc你不会使用$_POST。。。