Как добавить правило проверки на основе пользовательского запроса к базе данных - PullRequest
0 голосов
/ 03 ноября 2018

Я хочу, чтобы пользователь ввел почтовый индекс, затем в контроллере регистра. Я хочу проверить этот почтовый индекс по базе данных почтовых индексов, которая у меня есть, поэтому, если предоставленный пользователем почтовый индекс находится в моей базе данных, он будет успешным, несмотря на форматирование, которое он / она использовал и под этим я подразумеваю, что я хочу, чтобы проверка прошла успешно, независимо от того, использует он / она пробелы или вообще не использует пробелы. запрос, который я хотел бы использовать:

$postalcode=$data['postal_code'];
    zipcodes::whereRaw('replace(POSTAL_CODE,\' \',\'\')=? ',[str_replace(' ','',$postal_code) 

Я пытался использовать в своей проверке следующее:

Rule::exists('zipcodes','POSTAL_CODE')->where(function ($query) use($postalcode) {
              //  die($postalcode);
                $query->whereRaw('replace(POSTAL_CODE,\' \',\'\')=? ',[str_replace(' ','',$postalcode)]);
            })

но он не делает то, что я хочу, и, кажется, уже пытается выяснить, существует ли почтовый индекс в таблице zipcodes перед выполнением замены mysql или php str_replace. так что, пожалуйста, какие-либо предложения?

1 Ответ

0 голосов
/ 04 ноября 2018

Самый простой способ сделать это - использовать метод validate() Laravel. https://laravel.com/docs/5.7/validation

Вы можете использовать Exists правило проверки. Он проверит базу данных, которой вы сообщаете, и если запись существует, если она существует, то будет показана как действительная.

Если вам нужно обрезать пробелы перед проверкой, сначала просто наберите $request->postal_code = str_replace(' ', '', $request->postal_code);, прежде чем вызывать метод validate.

Вот полный пример:

$request->postal_code = str_replace(' ', '', $request->postal_code);

$request->validate([
    'postal_code' => 'required|exists:zipcodes',
]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...