Laravel標準のauthenticationクラスを使う際のusersテーブルのデータ構造
remember_tokenフィールドを省略するとdb:seedでエラーが発生
Laravel標準のauthenticationを利用する際のUserモデルの定義方法。
db:seedでサンプルデータを投入する際に下のエラーが発生しました。
php artisan db:seed
{"error":{"type":"Symfony\\Component\\Debug\\Exception\\FatalErrorException","message":"Class User contains 3 abstract methods and must therefore be declared abstract or implement the remaining methods(Illuminate\\Auth\\UserInterface::getRememberToken, Illuminate\\Auth\\UserInterface::setRememberToken, Illuminate\\Auth\\UserInterface::getRememberTokenName)","file":"C:\\xampp\\htdocs\\vhost\\laravel\\app\\models\\User.php","line":56}}
このエラーについては以下のリンクに対処方法が書いてありました。
Upgrading To 4.1.26 From <= 4.1.25
- remember_tokenフィールドを追加
- 追加の関数をUserモデルに記述
上の2つの作業をすることでエラーを回避することが出来ます。
作業内容
Laravelのマイグレーションでremember_tokenカラムを追加します。
public function up() { Schema::create('users', function(Blueprint $table) { $table->increments('id'); $table->string('email'); $table->string('password'); $table->string('username'); $table->string('remember_token', 100)->nullable(); $table->integer('admin'); $table->timestamps(); }); }
remember_tokenカラムを追加することで、db:seedで発生したエラーを回避することが出来ます。
上で載せたリンクに記載されている[Upgrade Path]の3つの関数をUserモデルに追加することで、認証時にremember_tokenカラムにトークンキーが格納されるようになります。