laravel5.1でのデータベース定義(スキーマビルダー&migrationの使い方)

laravel5.1でのデータベース定義(スキーマビルダー&migrationの使い方)

Laravel5.1では、以下の手順でDB生成を行う

1, php artisan make:migrationコマンドで、DB定義ファイルを生成
2, databases/migrationsに生成されたDB定義ファイルに、フィールド定義を記述
3, php artisan migrationコマンドで、MySQL等に実装(CREATE TABLE文)
// ↑↑↑↑ここまでテーブル定義。
// ↓↓↓↓ここからINSERTするレコード定義
4, php artisan make:seederコマンドで、レコード定義ファイルを生成
5, database/seedsに生成されたレコード定義ファイルに、挿入するデータを記述
6, php artisan db:seedコマンドでレコード生成(INSERT文)

1, DB定義ファイルを生成(–create=が実際のテーブル名)

2, databases/migrationsに生成されたDB定義ファイルに、フィールド定義を記述

フィールドの型
http://readouble.com/laravel/5/0/0/ja/schema.html

コマンド 説明
$table->bigIncrements(‘id’); BIGINTを使用した自動増分ID
$table->bigInteger(‘votes’); BIGINTカラム
$table->binary(‘data’); BLOBカラム
$table->boolean(‘confirmed’); BOOLEANカラム
$table->char(‘name’, 4); CHARカラム
$table->date(‘created_at’); DATEカラム
$table->dateTime(‘created_at’); DATETIMEカラム
$table->decimal(‘amount’, 5, 2); 有効/小数点以下桁数指定のDECIMALカラム
$table->double(‘column’, 15, 8); 15桁、小数点以下8桁のDOUBLEカラム
$table->enum(‘choices’, [‘foo’, ‘bar’]); ENUMカラム
$table->float(‘amount’); FLOATカラム
$table->increments(‘id’); 自動増分ID(主キー)
$table->integer(‘votes’); INTEGERカラム
$table->json(‘options’); JSONフィールド
$table->jsonb(‘options’); JSONBフィールド
$table->longText(‘description’); LONGTEXTカラム
$table->mediumInteger(‘numbers’); MEDIUMINTカラム
$table->mediumText(‘description’); MEDIUMTEXTカラム
$table->morphs(‘taggable’); INTERGERのtaggable_idと文字列のtaggable_typeを追加
$table->nullableTimestamps(); NULL値を許す以外、timestamps()と同じ
$table->smallInteger(‘votes’); SMALLINTカラム
$table->tinyInteger(‘numbers’); TINYINTカラム
$table->softDeletes(); ソフトデリートのためのdeleted_atカラム追加
$table->string(‘email’); VARCHARカラム
$table->string(‘name’, 100); 長さ指定のVARCHARカラム
$table->text(‘description’); TEXTカラム
$table->time(‘sunrise’); TIMEカラム
$table->timestamp(‘added_on’); TIMESTAMPカラム
$table->timestamps(); created_atとupdate_atカラムの追加
$table->rememberToken(); VARCHAR(100) NULLのremember_tokenを追加
->nullable() カラムにNULL値を許す
->default($value) カラムのデフォルト値設定
->unsigned() INTEGERを符号なしにする

// インデックス系
コマンド 説明
$table->primary(‘id’); 主キーを追加
$table->primary([‘first’, ‘last’]); 複合キーを追加
$table->unique(‘email’); ユニークキーを追加
$table->index(‘state’); 基本的なインデックスを追加

よく使う型(コメントも付与できる)
$table->increments(‘id’)->comment(‘自動増分ID(主キー)’);
$table->string(‘name’)->comment(‘VARCHAR(255)カラム’);
$table->string(‘email’)->comment(‘index系はtext不可’);
$table->unique(‘email’)->comment(‘ユニークキーを追加’);
$table->text(‘content’)->comment(‘TEXTカラム’);
$table->integer(‘age’)->comment(‘INTEGERカラム’);
$table->boolean(‘confirmed’)->comment(‘BOOLEANカラム’);
// システム系なので、コメントがエラーになる
$table->timestamps(); // ->comment(‘created_atとupdate_atカラムの追加(defualt=null)’);
$table->softDeletes(); //->comment(‘ソフトデリートのためのdeleted_atカラム追加’);

3, php artisan migrationでMySQLなどに実装する
# 上記のDB定義ファイルに従って、MySQLにテーブル生成を行う。

4, php artisan make:seederコマンドで、レコード定義ファイルを生成

5, database/seedsに生成されたレコード定義ファイルに、挿入するデータを記述

database/seeds/DatabaseSeeder.php(最初からある)にSeedingしたいファイルを追加する

6, php artisan db:seedコマンドでレコード生成(INSERT文)
これで実際のMySQLにレコードが一件追加されているはず。