移行を使用してLaravelでデータベーステーブルを作成および管理する方法
Laravelデータベースの移行を使用すると、開発者は、データベースコンソールにログインしたり、SQLクエリを実行したりすることなく、アプリケーションのデータベースをすばやくブートストラップ、破棄、および再作成できます。
このガイドでは、データベース移行を作成して、アプリケーションリンクを保存するテーブルを設定します。 これを行うには、デフォルトでLaravelに付属しているArtisanコマンドラインツールを使用します。 最後に、artisan
コマンドのみを使用して、データベーステーブルを何度でも破棄および再作成できます。
開始するには、まず、アプリケーションのルートディレクトリにいて、DockerCompose開発環境が稼働していることを確認します。
cd ~/landing-laravel docker-compose up -d
Outputlanding-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
を使用することを忘れないでください。
docker-compose exec app php artisan make:migration create_links_table
OutputCreated Migration: 2020_11_18_165241_create_links_table
Note: The migration name is generated based on the current date and time, and the name provided as an argument to the make:migration
command. For that reason, your migration file name will differ slightly. For the exact file name, check with the following:
find ~/landing-laravel/database/migrations -name '*create_links_table.php'
Output/home/sammy/landing-laravel/database/migrations/2020_11_18_165241_create_links_table.php
選択したエディターを使用して、生成された移行クラスを開きます。
nano database/migrations/2020_11_18_165241_create_links_table.php
次に、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つの新しいフィールドが含まれています。
url
:リンクURLを保存するための文字列フィールド。description
:リンクの説明を保存するためのテキストフィールド。enabled
:有効かどうかに関係なく、リンクの状態を格納するフィールド。boolean
スキーマタイプは、tinyint
符号なしフィールドを生成して、1
の0
のいずれかの値を格納します。
これらのフィールドの追加が完了したら、移行ファイルを保存します。 次に、次のコマンドで移行を実行します。
docker-compose exec app php artisan migrate
OutputMigration 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
テーブル)の移行が含まれているためです。 Because your demo application won’t use these features, it is safe to remove those migrations now; however, you may also opt to leave them in place if you are working on an application of your own and you plan on developing it further. すべての移行ファイルは、アプリのルートフォルダーのdatabase/migrations
にあります。
データベース移行の詳細については、Laravelでデータベース移行とシーダーを使用してデータベースセットアップを抽象化する方法に関するガイドを参照してください。
このシリーズの次のパートでは、カスタムArtisanコマンドを作成して、アプリのリンクテーブルのエントリを一覧表示、挿入、および削除します。