Laravelのマイグレーションを徹底解説
目次
はじめに
本記事では、Laravelのマイグレーションとは何かをわかりやすく解説します。
チュートリアルの全体像
本チュートリアルを通じて学べる内容は以下のようになります。
- Laravelの開発環境セットアップ
- Laravel Breezeで認証機能を導入
- Laravelのルーティングを徹底解説
- Laravelのコントーラーを徹底解説
- Laravelのブレイドを使ってみよう
- マイグレーションの仕組みを解説
- シーディングを使ってみよう
- Eloquentの基本と使い方を徹底解説
- 画像アップロードを実装する方法
- バリデーションを実装してみよう
- Laravelで認可処理を実装しよう
動画で学びたい方はこちらから!
解説
マイグレーションとは?
マイグレーションとは、データベースの構造をバージョン管理できる機能です。
上の図のような3人のチームで開発しているとします。
誰かが実装上の都合でデータベース構造(スキーマと呼ばれます)を変更したくなったとき、マイグレーションファイル を記述します。
このマイグレーションファイルにはデータベースの構造をどうやって変更するかが書かれています。
このマイグレーションファイルを他のチームメンバーに共有して、そのチームメンバーがマイグレーションを実行するためのコマンドを打つだけで、データベース構造が共有できます。
まだチーム開発を経験したことない人ですと、マイグレーションの良さがイマイチぴんと来ないかもしれませんが、絶対に必要になるのでしっかり覚えていきましょう!
実践
ファイル作成
以下のコマンドを実行します。
php artisan make:migration create_posts_table
php artisan make:migration create_comments_table
php artisan make:migration add_columns_to_users_table
database/migrations配下にファイルが作成されます。
./database
|-- migrations
| |-- ...
| |-- ...
| |-- ...
| |-- 2024_08_06_091735_create_posts_table.php
| |-- 2024_08_06_092132_create_comments_table.php
| `-- 2024_08_06_092816_add_columns_to_users_table.php
`-- seeders
`-- ...
新規テーブル追加
XXXX_create_posts_table.php
public function up(): void
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->integer('user_id');
$table->string('image_path');
$table->string('caption');
$table->timestamps();
$table->softDeletes();
});
}
XXXX_create_comments_table.php
public function up(): void
{
Schema::create('comments', function (Blueprint $table) {
$table->id();
$table->integer('user_id');
$table->integer('post_id');
$table->string('text');
$table->timestamps();
$table->softDeletes();
});
}
既存テーブルにカラム追加
<?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::table('users', function (Blueprint $table) {
$table->string('icon')->nullable()->after('email');
$table->string('description')->nullable()->after('icon');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('icon');
$table->dropColumn('description');
});
}
};
マイグレーションの実行
※現在実行してもエラーが出る状態です。次回の章で修正して実行しますので、今実行する必要はありません。
php artisan migrate
まとめ
次回はシーディングについてです。
この記事へのコメントはありません。