開発者ドキュメント

移行を使用してLaravelでデータベーステーブルを作成および管理する方法

Laravelデータベースの移行を使用すると、開発者は、データベースコンソールにログインしたり、SQLクエリを実行したりすることなく、アプリケーションのデータベースをすばやくブートストラップ、破棄、および再作成できます。

このガイドでは、データベース移行を作成して、アプリケーションリンクを保存するテーブルを設定します。 これを行うには、デフォルトでLaravelに付属しているArtisanコマンドラインツールを使用します。 最後に、artisanコマンドのみを使用して、データベーステーブルを何度でも破棄および再作成できます。

開始するには、まず、アプリケーションのルートディレクトリにいて、DockerCompose開発環境が稼働していることを確認します。

  1. cd ~/landing-laravel
  2. docker-compose up -d
Output
landing-laravel_app_1 is up-to-date landing-laravel_nginx_1 is up-to-date landing-laravel_db_1 is up-to-date

次に、データベース移行を作成して、linksテーブルを設定します。 Laravel Migrations を使用すると、開発者はデータベーススキーマのバージョン管理システムとして機能し、データベーステーブルをプログラムで作成、更新、および破棄できます。

新しい移行を作成するには、make:migration Artisanコマンドを実行すると、Laravelアプリケーションのdatabase/migrationsフォルダーにある新しいクラスがブートストラップされます。 このクラスには、デフォルトの定型コードが含まれます。

PHPがインストールされているappサービスコンテナでコマンドを実行するには、docker-compose exec appを使用することを忘れないでください。

  1. docker-compose exec app php artisan make:migration create_links_table
Output
Created Migration: 2020_11_18_165241_create_links_table

移行名は、現在の日時と、make:migrationコマンドの引数として指定された名前に基づいて生成されることに注意してください。 そのため、移行ファイル名は若干異なります。

選択したエディターを使用して、生成された移行クラスを開きます。

  1. nano database/migrations/2020_11_18_165241_create_links_table

次に、upメソッドを更新して、アプリデータを保存するために必要なテーブル列を含めます。

移行クラスの現在のコンテンツを次のコードに置き換えます。 強調表示された値は追加が必要な唯一の行であるため、必要に応じて、強調表示された行のみをコピーして、Schema::create定義に含めることもできます。

database / migrations / 2020_10_12_171200_create_links_table.php
<?php

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

class CreateLinksTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('links', function (Blueprint $table) {
            $table->id();
            $table->string('url', 200);
            $table->text('description');
            $table->boolean('enabled')->default(true);
            $table->timestamps();
        });
    }

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

Artisanコマンドで自動的に生成されるテーブル定義に含まれるデフォルトのフィールドに加えて、このテーブルには3つの新しいフィールドが含まれています。

これらのフィールドの追加が完了したら、移行ファイルを保存します。 次に、次のコマンドで移行を実行します。

  1. docker-compose exec app php artisan migrate
Output
Migration table created successfully. Migrating: 2014_10_12_000000_create_users_table Migrated: 2014_10_12_000000_create_users_table (152.46ms) Migrating: 2014_10_12_100000_create_password_resets_table Migrated: 2014_10_12_100000_create_password_resets_table (131.12ms) Migrating: 2019_08_19_000000_create_failed_jobs_table Migrated: 2019_08_19_000000_create_failed_jobs_table (101.06ms) Migrating: 2020_11_18_165241_create_links_table Migrated: 2020_11_18_165241_create_links_table (60.20ms)

create_links_tableとともに他の移行も実行されたことに気付くでしょう。 これは、デフォルトのLaravelインストールには、ユーザー(usersテーブルとpassword_resetsテーブル)およびキューに入れられたジョブ(failed_jobsテーブル)の移行が含まれているためです。 デモアプリケーションはこれらの機能を使用しないため、これらの移行を今すぐ削除しても安全です。 ただし、独自のアプリケーションに取り組んでいて、それをさらに開発する予定がある場合は、それらをそのままにしておくこともできます。 すべての移行ファイルは、アプリのルートフォルダーのdatabase/migrationsにあります。

データベース移行の詳細については、Laravelでデータベース移行とシーダーを使用してデータベースセットアップを抽象化する方法に関するガイドを参照してください。

このシリーズの次のパートでは、カスタムArtisanコマンドを作成して、アプリのリンクテーブルのエントリを一覧表示、挿入、および削除します。

モバイルバージョンを終了