使用Laravel

时间:2018-12-13 10:20:22

标签: php laravel validation

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

假设,我有一个数据库,用户名中最多支持255个字符。现在,在验证输入数据时,而不是在硬编码用户名中允许的最大字符数(比如说80)时,我该如何去将最大允许的字符数存储在设置表中,然后使用该值来验证输入数据。

基本上,我想让管理员可以选择在管理面板中配置允许的最大字符数。

是否有任何方法可以实现,而不必使用自定义验证规则?

编辑: 假设我们有一个char(255)类型的数据库字段来存储电子邮件。管理员不一定要允许电子邮件长度超过30个字符,在这种情况下,他可以配置一个设置以允许电子邮件中最多字符个数,该设置值将存储在数据库中,并将在以后使用验证目的。

2 个答案:

答案 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 ...