Проверка входных данных по критериям, указанным в поле базы данных в Laravel - PullRequest
0 голосов
/ 13 декабря 2018

Как мне проверить входные данные по критериям, указанным в базе данных?

Предположим, у меня есть база данных, поддерживающая до 255 символов в имени пользователя.Теперь при проверке входных данных вместо жесткого кодирования максимально допустимого количества символов (скажем, 80) в имени пользователя, как я могу сохранить максимальное количество разрешенных символов в таблице настроек и затем использовать это значение для проверкивходные данные.

По сути, я хочу дать администратору возможность настроить максимально допустимое количество символов из панели администратора.

Есть ли способ достичь этого без использования пользовательских правил проверки?

Редактировать: Допустим, у нас есть поле базы данных типа char (255) для хранения электронной почты.Администратору может не потребоваться разрешить использование электронной почты длиной более 30 символов, в этом случае он может настроить параметр, чтобы разрешить максимальное количество символов в письме, заданное значение будет сохранено в базе данных и будет использоваться в будущем.цель проверки.

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Если вы не хотите создавать в PHP функцию, которая проверяет длину в зависимости от того, что вы поместили в БД, вы можете проверить длину с помощью вставки.

INSERT
INTO
    users(username)(
        SELECT
            '".$_POST[' username']."'
        FROM
            settings
        WHERE
            settings.field = 'max_username'
            AND LENGTH('".$_POST[' username']."')<= settings.data
    )

Ofc, вы не собираетесьиспользуйте $ _POST ...

0 голосов
/ 13 декабря 2018

Возможно, вы могли бы дать администратору возможность определить само правило валидации.

Я полагаю, у вас есть таблица БД с правилами валидации, что-то вроде этого:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...