今回は、初学者向けでマイグレーションについて、記事を書いていこうと思います。
Laravelのマイグレーションとは?
Laravelのマイグレーション とは?
⇒DBテーブルの作成や編集、削除などの履歴管理をするものがLaravelには備わっています。
ファイルの作成
ファイルの作成するには、コマンドプロンプトを開き、下記のコマンドをたたきます。
php artisan make:migration create_「テーブル名」_table
■例
php artisan make:migration create_tests_table
make:migration …複数で作成する場合、migrationとなる
tests …ファイル名も「tests」複数形になる
下記パスにファイルが生成されます。
databases/migrations
※マイグレーションファイルは、履歴管理の仕組みもあり、年月日時間の情報もファイルの中に記載されております。
ファイルの編集
下記がファイルの中身の詳細となります。
「up」の中身にカラムを記載することができます。
例えば、カラム名「text」を追加したいときに「$table->string(text
);」のコードを追記することで、テーブルにカラムを追加することができます。
■ファイルの中身(修正前)
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('posts');
}
};
■ファイルの中身(修正後)
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('text');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('posts');
}
};
処理を追加した後に、コマンドプロンプトに戻り、下記のコマンドをたたきます。
php artisan migrate
■結果
Xamppを起動させ、phpMyAdminから確認すると
「text」がカラムとして追加されています。
テーブルの削除と再生成
下記のコマンドはテーブルのすべてを削除するコマンドです。
※※削除コマンドを使用する際は必ず注意しましょう。
- テーブルを全て削除し再生成
php artisan migrate:fresh
- ロールバックして再生成
php artisan migrate:refresh
モデル・マイグレーションの同時作成
コマンドプロントを開き、
オプションで「-m」をつけることでモデルと「ContactForm」というマイグレーションも同時作成がされます。
php artisan make:model ContactForm -m
■結果
下記パスに2つのファイルが生成されます。
・パス
app/Models/ContactForm
・パス
app/database/migrations
・ファイル名:xxx_create_contact_forms.php
public function up()
{ Schema::create('contact_forms', function (Blueprint $table) {
$table->id();
$table->timestamps(); });
まとめ
Laravelのマイグレーションには、いろんな機能が備わっており、データベースの操作やカラムの追加、削除などが可能です。
削除コマンドや一括削除コマンドを使うには、必ず注意が必要ですので、たたく前は気を付けましょう。