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.php
migrationsテーブル内容確認 php artisan migrate:status
全ロールバック(down) php artisan migrate:reset 全マイグレーションファイルのdownメソッドが実行される
ファイル指定ロールバック php artisan migrate:rollback --step=1 --path=/database/migrations/XXXXXXX.php
全ロールバック
&マイグレーション
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'); ※カラム名をidにすると自動で主キーになる?
   $table->unsignedInteger('id', false); ※auto incrementさせたくない場合
   $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('カラム名');
  });

 }

alter(型変更)

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

$table->integer(‘カラム名’)->change();

alter(名前変更)

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

$table->renameColumn(‘変更前’, ‘変更後’);

主キー

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

外部キー制約

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

$table->dropForeign('制約名');

index

$table->index(['カラム1', 'カラム2']);
名前が長いエラーが出る場合
〜->name('〜')

$table->dropIndex(['カラム1', 'カラム2']);

unique

$table->unique(['カラム1', 'カラム2']);
名前が長いエラーが出る場合
〜->name('〜')

$table->dropUnique(['カラム1', 'カラム2']);

シード

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

 }
}

 
 
Laravel

前の記事

Laravel Model
Laravel

次の記事

Laravel Validation