【Laravel】データベーステーブルとmigration
テーブル作成の流れ
・テーブルの下地となるマイグレーションファイルを生成する。
・マイグレーションファイルにカラムの構造を書き込む。
・データベース側にマイグレーションファイルの内容を反映させる。
マイグレーションファイルは、プロジェクトを生成するとデフォルトで存在している。
database/migrationsディレクトリに、
2014_10_12_000000_create_users_table.php
といった名前、ユーザー認証やセキュリティのためのマイグレーションファイルがいくつか用意されている。
migrationファイルを生成すると、このdatabase/migrationsディレクトリに追加されていく事になる。
migrationファイルを生成する
ターミナル
$ cd phpstudy
$ cd bookapp
結果
Created Migration: 2021_03_05_030455_create_books_table
ファイル名は、タイムスタンプとコマンド時に入力したcreate_users_tableで構成されている。
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateBooksTable extends Migration
{
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('users');
}
}
主な内容
-
use文で使用したいクラスを宣言する。
-
CreateBooksTableクラスはMigrationクラスを継承している。
-
CreateBooksTableクラスにはup関数とdown関数がある。
-
up関数の中でカラムを定義する。
-
down関数の中ではテーブル削除の処理が記述されている。
カラムの構成を編集する
Schema::create('books', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->timestamps();
});
ここでは、整数のid・文字列のtitleを定義した。
データベースの設定をする
'default' => env('DB_CONNECTION', 'sqlite'),
.envファイルも以下のように書き換える。
database.sqliteを作成する
database.sqliteを参照するよう定義したが、このファイルがまだ実在しないので、作成する。
ターミナルでファイルを作りたいディレクトリに移動し、touchコマンドで空ファイルを作成する。
migrationを実行してデータベースに反映させる
プロジェクトファイルに移動し、migrateを実行する。
Migration table created successfully.
の後に作成されたテーブルの内容が表示されれば完了。