Userモデルに対応するテーブルのデータ構造 on Laravel 4.2

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カラムにトークンキーが格納されるようになります。

Webエンジニアブログにコメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Userモデルに対応するテーブルのデータ構造 on Laravel 4.2の記事にコメントを投稿