Laravel Migration/Seed

Migrationとは

php artisan migrateコマンドによって実行されるバッチ処理
マイグレーションファイルに書かれた命令が実行される。
migrateの結果、migrationsテーブルに実行したファイル名が登録される。
登録されたファイル名は再度migrateを実行しても実行されない。

コマンド

マイグレーション
機能 コマンド 備考
マイグレーションファイル作成 php artisan make:migration XXXXX ––table=tests
マイグレーション実行 php artisan migrate 全マイグレーションファイルのupメソッドが実行される
マイグレーションファイル指定 php artisan migrate:refresh
--step=1
--path=/database/migrations/XXXXXXX_create_users_table.php
migrationsテーブル内容確認 php artisan migrate:status
全ロールバック php artisan migrate:reset 全マイグレーションファイルのdownメソッドが実行される
全ロールバック
&マイグレーション
php artisan migrate:refresh =reset、migrate
全テーブル削除
&マイグレーション
php artisan migrate:fresh downメソッドは実行されずにテーブルがdropされる
全ロールバック
&マイグレーション
&シード
php artisan migrate:refresh ––seed
シード
機能 コマンド 備考
シーディングファイル作成 php artisan make:seeder XXXXXTableSeeder
シーディング実行 php artisan db:seed 実行前にcomposer dump-autoloadが必要
シーディング実行(ファイル指定) php artisan db:seed --class=XXXXXTableSeeder
ロールバック&マイグレーション&シード マイグレーション」コマンド参照

マイグレーション

create

class Create〜Table extends Migration
{
 public function up()
 {
  Schema::create('物理テーブル名', function (Blueprint $table) {
   $table->increments('id');
   $table->integer('カラム名');
   $table->double('カラム名', 8, 5);
   $table->unsignedInteger('カラム名');
   $table->string('カラム名', 256);
   $table->string('カラム名');
   $table->text('カラム名');
   $table->timestamp('カラム名');
   $table->enum('カラム名', [
    'student',
    'teacher',
   ]);
   $table->timestamps();

   データ型の後に付けたし
   $table->データ型()
   ->default(0.0)
   ->nullable()
   ->comment('コメント')
   ->after('列名')
   ->before('列名');
  });
 }
}

drop

class Create〜Table extends Migration
{
 public function down()
 {
  Schema::dropIfExists(‘物理テーブル名’);
 }
}

add/delete

class Create〜Table extends Migration
{
 public function up()
 {
  Schema::table('物理テーブル名', function (Blueprint $table) {
   列追加
   $table->integer('カラム名');

   列削除
   $table->dropColumn('カラム名');

   主キー
   $table->primary(['カラム名', 'カラム名']);

   unique制約追加
   $table->unique(['自カラム名']);

   unique制約削除
   $table->dropUnique(['自カラム名']);

   外部キー制約追加
   $table->foreign('自カラム名')
    ->references('外部カラム名')
    ->on('外部テーブル名')
    ->onUpdate('RESTRICT')
    ->onDelete('CASCADE');
  });

   外部キー制約削除
   $table->dropForeign('制約名');
 }
}

alter

変更用ライブラリが必要
composer require doctrine/dbal

class Alter〜Table extends Migration
{
 public function up()
 {
  Schema::table('物理テーブル名', function (Blueprint $table) {
   列追加
   $table->integer('カラム名')->change();

   名前変更
   $table->renameColumn('変更前', '変更後');
  });
 }
}

シード

class 〜Seed extends Seeder
{
 public function run()
 {
  foreach ([1, 3, 5] as $i) {
   モデルクラス::create([
    '〜_id' => $i,
    '列名' => '〜',
    '列名' => '〜',
   ]);
  }
 }
}

 
 

前の記事

Laravel Model

次の記事

Laravel Validation