Laravel5でテーブルをmigrationで作成して初期データをセット
Laravel5
でテーブルをmigration
で作成して初期データをセットします。
テーブル定義
users
database/migrations
フォルダにusersを作成するファイルがすでに用意されています。
ログインに必要な情報がデフォルトではEメールアドレスになっていますが、ログインIDにしたかったのと、ユーザ名は姓名を分けて管理したかったので、以下のようにテーブル定義を少し変更しました。
Schema::create('users', function(Blueprint $table)
{
$table->increments('id');
$table->string('login_cd')->unique();
$table->string('first_name');
$table->string('last_name');
$table->string('email')->nullable();
$table->string('password', 60);
$table->rememberToken();
$table->timestamps();
});
first_name
が名でlast_name
が姓です。
カラム名を英語で定義するとこの辺がわかりづらくなってしまいます。
一般的にはどのように定義しているのか気になるところです。
命名規則で〜_id
は特別な意味があるようなので、ログインIDはlogin_cd
としました。また、emailは現時点では使用しませんのでnull
許可をしました。
migration
migration
コマンドを使用して、users
テーブルを作成します。
php artisan migrate
データベースにmigrations
テーブルとusers
テーブルが作成されました。
migrationのリセット
実行したmigration
を取り消したい場合は以下のコマンドを実行します。
php artisan migrate:reset
//または
php artisan migrate:rollback
すべての動作をクリアするのがreset
で直前の動作を取り消すのがrollback
です。手動でmigration
のファイルをいじってしまうとエラーになることがあります。
エラーになってしまった場合の対処法はlaravel5のmigrationでエラーになったときの対処法で紹介しています。
seedで初期データをセット
users
テーブルはとりあえず新規にはデータを作成しないため、テーブル作成時に一緒に初期データを登録することにします。
初期データの作成
database/DatabaseSeeder.php
で初期データ登録の処理を実装します。 サンプルにならって、以下のように定義します。
<?php
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
use App\User; //これを忘れずに!
class DatabaseSeeder extends Seeder {
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Model::unguard();
$this->call('UserTableSeeder');
Model::reguard();
}
}
class UserTableSeeder extends Seeder {
public function run()
{
DB::table('users')->delete(); //最初に全件削除
User::create([
'login_cd' => 'i-yamada'
,'first_name' => '一郎'
,'last_name' => '山田'
,'password' => bcrypt('yamada123') //暗号化します
]);
User::create([
'login_cd' => 'j-sato'
,'first_name' => '次郎'
,'last_name' => '佐藤'
,'password' => bcrypt('sato456') //暗号化します
]);
}
}
以下のコマンドでデータベースにデータを登録します。
php artisan db:seed
これでusers
テーブルの作成と初期値のセットができました。