使用Laravel中数据库字段中指定的条件验证输入数据



如何根据数据库中指定的条件验证输入数据?

假设,我有一个数据库可以支持用户名中最多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。。。

相关内容

  • 没有找到相关文章

最新更新