WinRoadのLaravel4初心者講座

次世代PHPフレームワークのLaravel4を初心者向けに解説して参ります。

Winroad徒然草の管理人がお届けします
usersテーブルの作成

usersテーブルの作成

このエントリーをはてなブックマークに追加

デフォルトのEloquent ORMでユーザー認証をするためには、usersテーブルが必要です。usersテーブルを作成しますので、ルーターに下記のように記述します。

app/routes.php
/*
|---------------------------------------------
| usersテーブルの作成
|---------------------------------------------
*/
Route::get('create/users/table',function(){
 //usersテーブルの存在確認
 if(!Schema::hasTable('users')){
 //usersテーブルの作成
 Schema::create('users',function($table){
 $table->increments('id');
 $table->string('name',32);
 $table->string('email',100);
 $table->string('password',64);
 $table->string('onepass');
 $table->tinyinteger('activate')->default(0);
 $table->integer('role_id')->nullable();
 //$table->integer('group_id')->nullable();
 $table->text('profile')->nullable();
 //created_atとupdated_atの同時作成
 $table->timestamps();
 //deleted_atカラムを追加
 $table->timestamp('deleted_at')->nullable();
 });
 return 'usersテーブルを作成しました。';
 }else{
 return 'usersテーブルが存在しますので、処理を中止します。';
 }
});
  • 8行目:既にあるusersテーブルを間違って削除しないように、事前にusersテーブルの存在確認をします。
  • 12-14行目:認証で必要な項目は、passwordともう一つの項目ですが、とりあえず、name、emailを作成します。
  • 15行目:onepassは、ユーザーによる新規ユーザーの作成を許可するときには、メールによるアクティベート手続きぐらいは必要ですので、そのときのワンタイムパスワードを保存するために作成しました。必須ではありませんので、省略してもかまいません。
  • 16行目:アクティベートしているユーザーのみにアクセスさせるための、アクティベート項目を作成します。デフォルトは0にしています。メールによるアクティベートでこの項目を1に変更させるようにします。
  • 17行目:rolesテーブルとリレーションをするために、作成します。NULL値を許可します。
  • 19行目:ユーザープロフィールの為の項目を作成します。
  • 21行目:created_atとupdated_atを同時に作成します。
  • 23行目:ソフトデリートの為のdeleted_atを作成します。Userモデルにソフトデリートを使用するための設定を忘れないようにします。

※4.1.26のセキュリティアップデート(2014年4月16日追補)

4.1.26のリリースに伴い、セキュリティ強化のために、Remember Me用のカラムをユーザーテーブルに作成する必要があります。11行目から23行目の間に下記の1行を追加してください。

$table->string(‘remember_token’,100)->nullable();

そして、Userモデルに下記を追加してください。

public function getRememberToken()
{
return $this->remember_token;
}
public function setRememberToken($value)
{
$this->remember_token = $value;
}
public function getRememberTokenName()
{
return ‘remember_token’;
}

詳細は、http://laravel4.kore1server.com/docs/upgradeを参照してください。

ブラウザにhttp://ドメイン名/create/users/tableと入力すると、usersテーブルが作成されます。※ドメイン名は、ローカルの場合は、localhost/laravel4(または、laravel)/publicになると思います。

次に、Userモデルに下記のコードを追加します。

app/models/User.php
/*
|---------------------------------------------
| パスワードセッター
|---------------------------------------------
*/
public function setPasswordAttribute($value){
$this->attributes['password']=Hash::make($value);
}
/*
|--------------------------------------------
| 複数代入禁止フィールドの指定
|--------------------------------------------
*/
protected $guarded=array('id');

/*
|--------------------------------------------
| リレーションの指定
|--------------------------------------------
*/
public function role(){
return $this->belongsTo('Role');
}
  • 5-7行目:パスワードセッターは、データを保存するときに、コントローラ側で、ハッシュのし忘れをなくすためにモデルに作成しています。
  • 14行目:id以外の複数代入を許可します。
  • rolesテーブルに多(users)対1(roles)のリレーションを設定しています。認証済みのデータには、Auth::user()->role()->first()->levelで、rolesテーブルのlevel項目にアクセスすることができます。

« »

コメントを残す

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