移行を使用して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
移行名は、現在の日時と、make:migration
コマンドの引数として指定された名前に基づいて生成されることに注意してください。 そのため、移行ファイル名は若干異なります。
選択したエディターを使用して、生成された移行クラスを開きます。
- nano database/migrations/2020_11_18_165241_create_links_table
次に、up
メソッドを更新して、アプリデータを保存するために必要なテーブル列を含めます。
移行クラスの現在のコンテンツを次のコードに置き換えます。 強調表示された値は追加が必要な唯一の行であるため、必要に応じて、強調表示された行のみをコピーして、Schema::create
定義に含めることもできます。
<?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
テーブル)の移行が含まれているためです。 デモアプリケーションはこれらの機能を使用しないため、これらの移行を今すぐ削除しても安全です。 ただし、独自のアプリケーションに取り組んでいて、それをさらに開発する予定がある場合は、それらをそのままにしておくこともできます。 すべての移行ファイルは、アプリのルートフォルダーのdatabase/migrations
にあります。
データベース移行の詳細については、Laravelでデータベース移行とシーダーを使用してデータベースセットアップを抽象化する方法に関するガイドを参照してください。
このシリーズの次のパートでは、カスタムArtisanコマンドを作成して、アプリのリンクテーブルのエントリを一覧表示、挿入、および削除します。