• Laravel

[Laravel] マイグレーションについて(基本)

Laravelのインストール、初期設定も終わったので、次はデータベースにテーブルを作成してみます。

テーブルの作成にはmigrate(マイグレート)という処理を行います。

migrationファイルの作成

プロジェクトのルート(artisanファイルがある場所)で下記のコマンドを実行

php artisan make:migration create_テーブル名_table

※テーブル名は複数形で作成します。
user -> users といったように。

ちなみにモデルも一緒に作成したい場合には、下記のようにコマンドを実行しましょう。

php artisan make:model モデル名 -m

最後の -m の部分がマイグレーションファイルも一緒に作成するよ、という意味になります。

さて、コマンドを実行しうまく実行ができていれば、
database/migrationsディレクトリ配下に「2023_xx_xx_xxxxxx_create_テーブル名_table.php」
というファイルが出来上がっているはずです。

作成されたmigrationファイルの記述

例えばcompaniesという名前でマイグレーションファイルを作成した場合には、初期では下記のようにファイルが作成されていると思います。

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('companies', function (Blueprint $table) {
            $table->id();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('companies');
    }
};

上記のupメソッドの中に、カラムを設定します。

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('companies', function (Blueprint $table) {
            $table->id();
            $table->string('name')->comment('企業名');
            $table->string('post_code')->comment('郵便番号');
            $table->string('address')->comment('住所');
            $table->string('tel')->comment('電話番号');
            $table->string('ceo_name')->comment('代表者名');
            $table->text('note')->comment('備考')->nullable();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('companies');
    }
};

上記の例で行くと、企業名、郵便番号、住所、電話番号、代表者名、備考といったカラムが追加されることになります。

->stringや->textの部分でデータベースへの型を指定
('name')や('post_code')はカラム名を設定しています。

今回の型指定は文字列だけですが、他にも型の指定ができます。

詳細は下記URLの「利用可能なカラムタイプ」という項目をご覧ください。

https://readouble.com/laravel/8.x/ja/migrations.html

テーブルの作成

ファイルの記述が終わったら、マイグレートという処理をして、データベースにテーブルを作成します。

ターミナルから下記を実行すれば、自動で作成してくれます。

php artisan migrate

下記のコマンドで、現在のマイグレートの状況を確認することもできます。

php artisan migrate:status

以上がマイグレーションの手順となります。

マイグレーションがうまくいかない時は、おそらく.envファイルの記述に不備があり、データベースとの連携がうまくいってない可能性があります。

MAMPでの初期設定の方法については下記の記事でも書いてますので、参考にしていただければと思います。

https://from-forties.net/laravel-install/

それでは〜!