2015-01-25 5 views
0

У меня есть форма настроек, где пользователи могут обновлять свою информацию.Валидатор Laravel уникален, кроме идентификатора пользователя, не работает

Мой код проверки выглядит

$rules = array(
     'active' => 'required', 
     'email'  => 'email', 
     'username' => "required|alphaNum|unique:users,username,{{$id}}", 
     'password' => 'sometimes|min:3' 
    ); 

$id содержит идентификатор пользователя текущего пользователя.

Но я продолжаю получать сообщение об ошибке The username has already been taken., когда значение username является текущим именем пользователя.

Я также попытался линию, как 'username' => "required|alphaNum|unique:users,username,".$id,

+0

Посмотрев на [docs] (http://laravel.com/docs/4.2/validation#rule-unique), он выглядит '. '. $ Id' это столбец, в котором вы его сравниваете, - это имя пользователя, а не идентификатор пользователя. –

ответ

0

Чтобы вставить переменные в строку, которую вы должны использовать " двойные кавычки:

$rules = array(
    'active' => 'required', 
    'email'  => 'email', 
    'username' => "required|alphaNum|unique:users,username,{{$id}}", 
    'password' => 'sometimes|min:3' 
); 
+0

Привет, даже с двойными кавычками он также возвращает имя пользователя. –

0

мне пришлось бросить строку в $ ID, так что:

'username' => "required|alphaNum|unique:users,username,".(string)$id,

0

Если вы используете primaryKey как varchar. Важно, что данный $ id не имеет пробелов (обрезается). Это заставило меня подняться на несколько часов, чтобы это выяснить.

Смежные вопросы