【Laravel】マイグレーションでテーブル作成
こんにちは。今回はLaravelのマイグレーション機能を解説します。基礎的な内容になっているのでマイグレーションの初心者におすすめです。
マイグレーションとは
マイグレーションはデータベースの値を保持したままテーブルの作成、変更が出来るツールです。テーブルの作成、変更は全て履歴管理されているため、マイグレーションを実行することで最新のデータベース環境を作ることが出来ます。複数人で開発する際は、マイグレーションを各々が実行し、ローカルにデータベースの環境を作ることが出来ます。
今回やること
マイグレーションの基本、テーブル作成をやってみたいと思います。データベースはSqliteを使いますので、予め接続設定をしておきましょう。当ブログの記事Laravelでsqliteデータベースに接続するの手順で接続できます。
マイグレーションの作成と実行
artisanコマンドでmigrationクラスを作成します。–createオプションをつけることでテーブル名を指定することができます。今回はブログの投稿テーブル(posts)を作りますので–create=postsを指定します。コマンドが成功するとdatabase/migrationsにタイムスタンプ付きのクラスが作成されます。
$ php artisan make:migration create_posts_table --create=posts
# 成功時のメッセージ
Created Migration: 2021_07_21_223833_create_posts_table
作成されたクラスにはupとdownメソッドが作られています。upメソッドにはテーブル作成用のコマンドの雛形が作られており、downにはテーブル削除コマンドが作られています。upメソッドのSchema::create内にテーブルの項目を定義します。idとtimestampsメソッドが元から定義されています。timestampsはcreated_at(作成タイムスタンプ)とupdated_at(更新タイムスタンプ)を作ります。今回titleとcontentを文字列型で新たに追加しました。
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->string('content');
$table->timestamps();
});
}
マイグレーションを実行してみましょう。artisan migrateコマンドを実行します。
$ php artisan migrate
#成功時のメッセージ
Migrating: 2021_07_21_223833_create_posts_table
Migrated: 2021_07_21_223833_create_posts_table (37.40ms)
実際に作成されているかsqlite3コマンドラインツールで調べてみましょう。
$sqlite3 database/database.sqlite
.tablesでテーブル一覧を表示しpostsが作成されていることを確認します。.schema postsでテーブル定義を確認します。マイグレーションで指定した項目がCreate文に含まれていれば成功です。
sqlite> .tables
failed_jobs password_resets users
migrations posts
sqlite> .schema posts
CREATE TABLE IF NOT EXISTS "posts" ("id" integer not null primary key autoincrement, "title" varchar not null, "content" varchar not null, "created_at" datetime, "updated_at" datetime);
マイグレーションのロールバック
何か間違えた場合にマイグレーションをやり直したいときがあります。その時はartisan migrate:rollbackコマンドで直前のマイグレーションを取り消すことができます。
$ php artisan migrate:rollback
#成功時のメッセージ
Rolling back: 2021_07_21_223833_create_posts_table
Rolled back: 2021_07_21_223833_create_posts_table (50.10ms)
ディスカッション
コメント一覧
まだ、コメントがありません