laravel 開発日記 第4回 ~ マイグレーションとシーディング ~
今回はマイグレーションとシーディングを実行してみます。
なお、マイグレーションについては、
laravelにデフォルトで設定されている
・マイグレーション(migrations)
・ユーザー(users)
・パスワード管理(password_resets)
の3テーブルの登録、および、
ユーザーテーブルに「権限レベル(level)」カラムを追加します。
シーディングでは、このユーザーテーブルに、
・管理者(admin)
・上級ユーザー(manager)
・一般ユーザー(normal)
の3名を登録します。
まずは、SSHに接続、(以下コンソールにて)
laravel_stagingフォルダに移動して、以下コマンド実行
php artisan migrate
データベースに、
・migrations
・password_resets
・users
の、3つのデータベースができました。
次に、ユーザーテーブルにカラムを追加するマイグレーションファイルを作成します。
php artisan make:migration add_level_to_users_table --table=users
/laravel_staging/database/migrations/フォルダに、
以下のファイルが作成されました。
2015_06_02_140153_add_level_to_users_table.php
このファイルを修正します。
public function up() { Schema::table('users', function(Blueprint $table) { $table->text('level')->nullable(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('users', function(Blueprint $table) { $table->dropColumn('level'); }); }
アップ後、再びマイグレーションします。
php artisan migrate
phpMyAdminでデータベースを確認すると、
levelカラムが追加されてることが確認できます。
さらに、このlevelカラムをUsersテーブルに追加します。
【作業ファイル:/app/User.php】 protected $fillable = ['name', 'email', 'password']; ↓ protected $fillable = ['name', 'email', 'password','level'];
次はシーディングをします。
■初めてのLARAVEL 5 : (13) SEEDING(ララ帳)
https://laravel10.wordpress.com/2015/03/05/%E5%88%9D%E3%82%81%E3%81%A6%E3%81%AElaravel-5-13-seeding/
まいどおなじみララ帳さんを参考にしつつ、
/database/seeds/DatabaseSeeder.phpを修正します。
<?php use Illuminate\Database\Seeder; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\DB; //追加 use App\User; //追加 class DatabaseSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { Model::unguard(); $this->call('UserTableSeeder'); //追加 } } //追加ここから class UserTableSeeder extends Seeder { public function run() { DB::table('users')->delete(); //管理者 User::create([ 'name' => 'admin', 'email' => 'admin@abc.com', 'password' => 'xxxxxx', 'level' => 'admin', ]); //上級ユーザー User::create([ 'name' => 'manager', 'email' => 'manager@abc.com', 'password' => 'xxxxxx', 'level' => 'manager', ]); //一般ユーザー User::create([ 'name' => 'normal', 'email' => 'normal@abc.com', 'password' => 'xxxxxx', 'level' => 'normal', ]); } } //追加ここまで
パスワードは、暗号化されたものが必要なため、
・公開サイトで、/auth/register/からユーザー登録
↓
・phpMyAdminでデータを取得
しました。
というか、さくっと登録できるので、
そもそもシーディングの意味がない・・・と、
突っ込まれそうですが、気にしない。
これで、シーディングの準備完了。
さっそくSSHで接続し、シーディングを実行します。
php artisan db:seed
データベースを確認すると、無事3件追加されてました。
公開アドレス/home/からログインも、問題なくできました。
今回は、ここまで。
次回。
本アプリの仕様として、ユーザー登録は、アドミニストレーターが行う想定でいるので、以下の機能を実装します。
(1)ユーザーログイン画面から「ユーザー新規登録(Register)」を削除
(2)管理者権限でログインした時のみ、ユーザー新規登録への導線を表示
(3)ユーザー新規登録画面を表示するとき、ユーザー権限を確認して、管理者以外は見せないようにする。
を、やろうと思います。
Discussion
New Comments
No comments yet. Be the first one!