Laravel другая проверка не работает со строками, содержащими числа - PullRequest
0 голосов
/ 18 июня 2020

Я хочу проверить значение, полученное мной из определенной формы. Тип значения - текст. Я хочу, чтобы он соответствовал указанному имени пользователя c из базы данных из таблицы users, но также не совпадал с именем пользователя текущего пользователя.

Для этого я использовал следующие правила проверки:

'username' => [
    'required',
    'string',
    'exists:App\User,username',
    'different:' . auth()->user()->username
]

Я обнаружил, что всякий раз, когда значение auth()->user()->username включает di git, оно проходит проверку даже если request()->username = auth()->user()->username. Могу ли я что-нибудь сделать, чтобы этого не произошло?

Заранее спасибо.

Ответы [ 2 ]

5 голосов
/ 18 июня 2020

Используйте unique как -

Учитывая, что id - это ваш идентификатор пользователя.

'username' => 'required|string|unique:username,id,'.auth()->user()->username,

Это проверит, является ли имя пользователя уникальным или нет, кроме этого userId.

2 голосов
/ 18 июня 2020

Ответом на эту проблему было создание собственной Rule::exists проверки, которая показана ниже:

'username' => ['required', 'string', Rule::exists('users')->where(function ($query) {
                  $query->where('username', '<>', auth()->user()->username);
              })],
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...