このページではPHPのフレームワーク「Laravel」のマイグレーションの機能を使ってをテーブル作成する方法についてまとめています。
マイグレーションとは?
マイグレーションとは、データベースのバージョンを管理するための機能のことです。
データベースの操作(作成、変更、削除)などをフレームワーク上で管理して置くことで、DB操作を誤った場合や不具合があった場合に容易に元の状態に戻すことができます。
そのため、Laravelを使う場合は、phpMyAdminでテーブルを作成したり変更を加えるのではなく、マイグレーションを使って操作をするのが一般的です。
マイグレーション機能を使ってテーブル作成する方法
マイグレーションの機能を使ってテーブルを作成する手順は次のようになります。
- マイグレーションファイルの作成
- マイグレーションファイルにテーブル作成処理を記述
- マイグレーションの実行
それぞれ順に解説していきます。
1. マイグレーションファイルの作成
マイグレーションファイルを作成するためのコマンドは次のようになります。
php artisan make:migration 任意のマイグレーションファイル名
マイグレーションファイル名は任意でOKですが、わかりやすいものがいいでしょう。例えば、商品テーブルを作成するのであれば「create_products_table」のようにします。
このコマンドを実行することで、/database/migrations配下にマイグレーションファイルが生成されます。
2. テーブル作成処理を記述
生成されたファイルを、テキストエディタを開きましょう。
すると、次のような記述があると思います。
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateProductsTable extends Migration
{
public function up()
{
}
public function down()
{
}
}
このupメソッドに操作する処理(テーブル作成)を書きます。そして、downメソッドにはロールバック処理(元に戻すための処理)を書きます。
これにより、テーブル作成処理でデータベースがおかしくなったとしても、元に戻すことができるようになります。
では、実際にproductsを作ってみましょう。
以下、商品テーブルを作るためのサンプルコードです。
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateDrillsTable extends Migration
{
public function up()
{
//productsテーブルの作成
Schema::create('products', function (Blueprint $table) {
//カラムの設定
$table->bigIncrements('id');
$table->string('product_name');
$table->integer('price');
$table->string('category_name');
$table->boolean('delete_flg')->default(false);
$table->timestamps();
});
}
public function down()
{
//productsテーブルの削除
Schema::dropIfExists('products');
}
}
upメソッドの中の「Schema::create」でテーブルを作成します。
カラムの設定は$table->string(‘カラム名’)、$table->integer(‘カラム名’)のようにして設定していきます。
指定できるカラム名については以下の記事にまとめているので、詳しく知りたい人はこちらもチェックしてください。
【Laravelメモ】テーブル作成時に、指定できるカラムのデータ型
downメソッドの中では、ロールバックの処理を書くので、今回はテーブル削除の処理を書いています。
テーブル削除は「Schema::dropIfExists(‘テーブル名’);」でできます。
3. マイグレーションの実行
マイグレーションファイルに処理が記述できたら、次のコマンドでファイルを実行します。
php artisan migrate
これによりマイグレーションファイルのupメソッドが実行され、テーブルが作成されます。
もし、記述内容に誤りがあり、元に戻したい場合は、次のコマンドでファイルを実行します。
php artisan migrate:rollback
これにより、マイグレーションファイルのdownメソッドの処理が実行され、ロールバックできます。
Laravel学習にオススメの書籍