マイグレーションとモデルの作成
Last-modified: Thu, 06 Sep 2018 12:51:20 JST (2288d)
Top > マイグレーションとモデルの作成
- Laravelでは、マイグレーションとして、以下のコマンドを実行することにより、
テーブル作成に必要なひな形ファイルを生成することができます。php artisan make:migration create_<テーブル名を複数形にしたもの>_table --create=<テーブル名を複数形にしたもの>
作成されたひな形ファイルは、database/migrations/YYYY_MM_DD_HHMiSS_<テーブル名を複数形にしたもの>_table.php
な感じで作成されます。
作成されたファイルの中にある、upメソッド内に以下のような感じで項目を定義していきます。public function up() { Schema::create('login_histories', function (Blueprint $table) { $table->increments('id'); $table->integer('user_id')->nullable(false)->comment('登録ユーザID'); $table->string('memo')->nullable(false)->comment('備考'); $table->ipAddress('ipaddr')->nullable(false)->comment('アクセス元IPアドレス'); $table->longText('user_agent')->nullable(false)->comment('ユーザエージェント'); $table->timestamps(); //外部キー制約 $table->foreign('user_id') ->references('id') ->on('users') ->onDelete('cascade'); }); }
また、downメソッドには、Drop用のコードを書きます。具体的にはこんな感じ。public function down() { Schema::dropIfExists('login_histories'); }
- なお、ここでは例として外部キー制約を設定しているけど、テーブル制約設定は削除コストなどよく考えてつけること。
- 作成したマイグレーションファイルを使って実際にテーブルを作成するには、
php artisan migrate
で作成されます。
次に、テーブルにアクセスするためのモデルを作成します。php artisan make:model Models/<テーブル名の単数形>
これで、app/Models/配下にモデルファイルのひな型ができます。
- マイグレーションファイルの変更は、基本的に作成と同じです。
php artisan make:migration modify_<テーブル名を複数形にしたもの>_table --table=<テーブル名を複数形にしたもの>
でひな形ができるので、その中で項目の削除、変更を行います。
作成した制約の変更をする場合は、いったん制約の削除と追加を記載しないと当然エラーになります。
また、変更時はロールバック時も考慮しておきましょう。
具体的には以下のような感じです。public function up() { Schema::table('rss_datas', function (Blueprint $table) { //テーブルを分割するので項目削除 $table->dropColumn('rss_contents_list_cnt'); $table->dropColumn('hidden_flg'); $table->dropColumn('deliv_flg'); $table->dropColumn('repeat_deliv_deny_flg'); }); } public function down() { //ロールバック時項目を追加する。 Schema::table('rss_datas', function (Blueprint $table) { $table->smallInteger('rss_contents_list_cnt')->nullable(false)->comment('RSS記事表示数'); $table->boolean('hidden_flg')->nullable(false)->comment('非表示フラグ'); $table->boolean('deliv_flg')->nullable(false)->comment('メール配信フラグ'); $table->boolean('repeat_deliv_deny_flg')->nullable(false)->comment('配送拒否フラグ'); }); }
変更時のマイグレーション反映は、テーブル作成時と同様php artisan migrate
になります。
ロールバックは単純にphp artisan migrate:rollback
になります。
Counter: 700,
today: 2,
yesterday: 1
このページの参照回数は、700です。