Laravelでは、データベースのバージョン管理が行える「マイグレーション」という機能があります。
マイグレーションはデータベースのテーブルの作成・削除などができます。
今回はそのマイグレーションを利用し、新しいテーブルを作成する方法を紹介します。
マイグレーションでDBに新規テーブルを作成する
作成方法の流れは下記です。
1.マイグレーションファイルを作成する。
2.マイグレーションファイルを編集し、作成テーブルの設定をおこなう。
3.マイグレーションを実行する。
1.マイグレーションファイルを作成する。
まず、マイグレーションファイル作成用のコマンドをうちます。
コマンドは2パターンあります。
コマンド1
php artisan make:migration create_テーブル名_table
ファイル名が「create_テーブル名_table」のマイグレーションファイルが作成されます。
コマンド2
php artisan make:migration ファイル名 --create=テーブル名
このコマンド1とコマンド2は、どちらで実行しても良いです。
では例として、members(会員)テーブルを作成します。
php artisan make:migration create_members_table
今回の会員テーブルの命名はmembersとなります。
コマンド実行結果キャプチャ
これでマイグレーションファイル作成が完了しました。
続いてマイグレーションファイルの編集をします。
2.マイグレーションファイルを編集し、作成テーブルの設定をおこなう。
マイグレーションファイルを作成した初期状態で、下記のソースコードのようになっています。
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateMembersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('members', function (Blueprint $table) {
$table->id();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('members');
}
}
こちらを編集します。
この状態でもテーブルは作成できますが、カラムを追加したい場合は必要に応じて追加します。
今回は例として「nameカラム」と「addressカラム」と「tel」カラムを追加します。
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateMembersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('members', function (Blueprint $table) {
$table->id();
$table->string('name')->comment('名前');
$table->string('address')->comment('住所');
$table->string('tel')->comment('電話番号');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('members');
}
}
これでマイグレーションファイル修正は完了しました。
カラム追加の記載は他にも数パターンあります。
続いてマイグレーション実行をおこないます。
3.マイグレーションを実行する。
先ほど編集した、マイグレーションファイルのソースコードを実行するコマンドをうちます。
php artisan migrate
マイグレーションが実行され、テーブルを作成することができます。
マイグレーション実行キャプチャ
DB閲覧ツールキャプチャ
補足:マイグレーションファイルの構成について
マイグレーションファイルにはupメソッドとdownメソッドがあります。
upメソッド
upメソッドは、マイグレーション実行する処理となります。
今回の記事では、テーブル作成した処理が該当します。
upメソッド内では、Schemaファサードのcreateメソッドでテーブル作成処理を実行します。
createメソッドの第1引数にはテーブルを名を指定します。
マイグレーションファイル作成時のコマンド「create_テーブル名_table」を実行することで、自動的にcreateメソッドの第1引数のテーブル名が反映されます。
downメソッド
downメソッドは、1度マイグレーション実行したものを元に戻す処理となります。
テーブル作成処理がupメソッドにある場合は、テーブル削除の処理が記載される形になります。
元に戻す処理をロールバックと呼びます。
以下がロールバック実行コマンドになります。
php artisan migrate:rollback
こちらでdownメソッドが実行され、upメソッドで作成したテーブルを削除します。
モデル作成について
LaravelでDB(データベース)のテーブル作成をしたら、関連して必要になるファイルが「モデル」ファイルです。
モデルファイルには、データベースの対象テーブルのデータ操作について記載します。
詳しくは、下記の記事で紹介しております。
【Laravel】Model(モデル)の作成方法とModel(モデル)に何を書くかを考える
コメント