【Laravel】データベーステーブルとmigration

テーブル作成の流れ
・テーブルの下地となるマイグレーションファイルを生成する。
マイグレーションファイルにカラムの構造を書き込む。
・データベース側にマイグレーションファイルの内容を反映させる。
 
マイグレーションファイルは、プロジェクトを生成するとデフォルトで存在している。
database/migrationsディレクトリに、
 2014_10_12_000000_create_users_table.php
といった名前、ユーザー認証やセキュリティのためのマイグレーションファイルがいくつか用意されている。
 
migrationファイルを生成すると、このdatabase/migrationsディレクトリに追加されていく事になる。
 
 
migrationファイルを生成する
プロジェクトのディレクトリに移動し、以下のコマンドでマイグレーションファイルを作成する。
ターミナル
$ cd phpstudy
$ cd bookapp
$ php artisan make:migration create_books_table --create=books
 
結果
Created Migration: 2021_03_05_030455_create_books_table
 
実行後、database/migrationsディレクトリにマイグレーションファイルが作成されている。
ファイル名は、タイムスタンプとコマンド時に入力した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を定義した。
 
 
データベースの設定をする
プロジェクトディレクトリ/config/database.phpを編集する。
'default' => env('DB_CONNECTION', 'sqlite'),
今回はsqliteを使うので、sqliteと書き換える。
 
.envファイルも以下のように書き換える。
DB_CONNECTION = sqlite
DB_DATABASE=/Users/hinako/phpstudy/bookapp/database/database.sqlite
 
 
database.sqliteを作成する
database.sqliteを参照するよう定義したが、このファイルがまだ実在しないので、作成する。
ターミナル
$ cd database
$ touch database.sqlite
ターミナルでファイルを作りたいディレクトリに移動し、touchコマンドで空ファイルを作成する。
 
 
migrationを実行してデータベースに反映させる
ターミナル
$ cd ~/phpstudy/bookapp
$ php artisan migrate
プロジェクトファイルに移動し、migrateを実行する。
 
Migration table created successfully.
の後に作成されたテーブルの内容が表示されれば完了。