2015-01-22 8 views
0

Я пытаюсь научиться пользоваться Laravel, и до сих пор у меня не было никаких проблем. Затем я попытался реализовать пример проверки подлинности.laravel eloquent error in save password

1) Я создал миграционный файл, в котором я установить таблицу пользователя (пароль установлен на 60, маркер установлен в 100, следуя инструкции на Laravel сайте)

2) Я использовал сеялку для создания поддельных пользователи:

$faker = Faker::create(); 

     foreach(range(1, 10) as $index) 
     { 
      User::create([ 
       'firstname' => $faker->firstName(), 
       'lastname' => $faker->lastName(), 
       'email'  => $faker->email(), 
       'password' => Hash::make('password'), 
       'telephone' => $faker->phoneNumber(), 
       'admin'  => rand(0,1) 
      ]); 
     } 

Таблица в базе данных отлично посеяна без проблем.

3) Я создал контроллер UserController со следующей функцией

общественная функция пост-создания() {$ валидатор = Validator :: сделать ($ данных = Input :: все(), Пользователь :: $ правила) ;

if ($validator->fails()) { 
    return Redirect::to('users/newaccount')->with('message','error')->withInput()->withErrors($validator); 
} 

unset($data['password_confirmation']); 
$data['password'] = Hash::make(Input::get('password')); 
User::create($data); 

return Redirect::to('users/signin')->with('message','thanks'); 

}

4) Я создал форму для регистрации пользователя

{{ Form::open(array('route'=>array('users.createaccount'), 'method' => 'post')) }} 
     ..... 
      {{ Form::label('password') }} 
      {{ Form::password('password') }} 
     .... 
     {{ Form::submit('Create new account') }} 
     {{ Form::close() }} 

Проблема заключается в том, когда я проверить на таблицы БД пользователь является регистром и сохранены, и все поля заполняется, за исключением пароля (и токена, который остается пустым).

Но если я делаю dd ($ data) перед вызовом User :: create ($ data), это то, что я вижу:

array(6) { ["_token"]=> string(40) "5bSkWYHLfeBh8E2agiB15J2cQSzs6orI7m5ruFhx" ["firstname"]=> string(4) "mark" ["lastname"]=> string(4) "mark" ["email"]=> string(13) "[email protected]" ["password"]=> string(60) "$2y$10$J3eM3nBZ0l8eNa1BxpoDc.BzeQUKzTc7dwwbu7g7GdQLj4gJgjWxe" ["telephone"]=> string(8) "12345678" } 

Любой может сказать мне, почему только пароль и поля токена не сохраняются с помощью метода Eloquent в базе данных, в то время как они сохраняются с помощью сеялки?

THK

+0

Является ли 'password' в массиве' $ fillable'? – lukasgeiter

+0

uuuuuu ..... да, это правильно ... это было так, ... мне также нужно установить токен внутри заполняемого массива? ... (как я могу голосовать за ответ?) –

ответ

0

Все поля, которые вы хотите, чтобы перейти к create должны быть определены внутри $fillable массива. Также password

protected $fillable = array('firstname', 'lastname', 'email', 'password', 'telephone', 'admin'); 
                    ^^ 

_token определенно не нужно быть там. Это всего лишь токен Laravel добавляет для CSRF protection