今回は「MVC」のうち、「M」で必要な以下の内容を解説します。
- データベースの接続
- Laravelのマイグレーション機能でテーブルの作成
Laravelではデータベースの管理ができる「マイグレーション機能」があり、ファイルだけでテーブルやカラムの作成を行うことが可能です。
SQLのCREATE文でテーブルを作成するのに慣れてしまっていると、「SQL文を用意して実行した方が早いのに……」と思います……。
とはいえ、従来のCREATE文を実行するまで、XAMPPであればphpMyAdminにログインして、実行という操作が必要になりますが、マイグレーション機能を使えば実行一発で終わるので非常に便利です。
最初のうちは戸惑いますが、慣れちゃえば便利な機能なので実際にやって覚えていきましょう!
データベースの用意
まずはデータベースの用意をします。
開発環境はXAMPPを基に解説します。
手順1:XAMPPのコントロールパネルからMySQLを起動
XAMPPのコントロールパネルからMySQLを起動しましょう!
手順2:phpMyAdminを起動
起動を終えたら、MySQL右の「Admin」ボタンをクリックします。
phpMyAdminがブラウザで開きます。
手順3:データベースの新規作成
左エリアに表示されている「新規作成」をクリックします。
赤枠で囲んだ場所の左側に「データベース名」を入力、右側はセレクトボックスで「照合順序」を選択します。
「照合順序」とは・・・
データの並べ替えや比較を行うための規則のことです。
たとえば、Laravel標準の「utf8mb4_unicode_ci」ではアルファベットの大文字小文字や、ひらがな・かたかなの大文字小文字を区別しなくなります。「where=’あ’」という条件で「あ」と「ア」も抽出されるイメージですね。
ここではひとまず、完全一致で抽出してくれる「utf8mb4_bin」を選択します。
ここではデータベース名は「laravel_test」、照合順序は「utf8mb4_bin」を選びます。
データベース名を入力して、照合順序を選んだら「作成」ボタンをクリックしてください。
左エリアに「laravel_test」が追加されていたらデータベースの作成は成功です!
次に、Laravelでデータベースの接続を行いましょう。
データベースの接続方法
次にデータベースの接続方法を解説します。
ここではコードエディタ「VSCode」を基に解説します。
手順1:envファイルを開く
データベースの接続設定は「.env」ファイルで行います。
「C:\xampp\htdocs\test-laravel」直下にある、「.env」ファイルをクリックします。
手順2:envファイルを編集
データベースの接続は、赤枠で囲んだ場所を編集します。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1 # ホスト名
DB_PORT=3306 # ポート番号
DB_DATABASE=laravel_test # データベース名
DB_USERNAME=root # ユーザー名
DB_PASSWORD= # パスワード
DB_CHARSE=utf8mb4 # 追記:文字コード設定
DB_COLLATION=utf8mb4_bin # 追記:照合順序
XAMPPでは初期パスワードを設定していないので、特にいじっていなければ空欄のままで大丈夫です。
ユーザー名は「root」ですね。
データベース名は、先程作ったデータベースの名前を入れてください。
ホスト名は、phpMyAdminの以下の画像の赤枠を参照してください。
これで、データベースの接続は完了です。
ですが、このままだと「照合順序」の設定がうまく動かないので、次のファイルも編集します。
「C:\xampp\htdocs\test-laravel\config」のdatabase.phpを開きます。
少しスクロールすると、「mysql」の設定をしている箇所があります。
「charset」と「collation」がほかの設定のように「env()」が使われてませんね。
このままだと、先ほど編集した.evnファイルの「charset」と「collation」を参照してくれません。
.envファイルを参照するように変更します。
// 'charset' => 'utf8mb4',
'charset' => env('DB_CHARSE', 'utf8mb4'),
// 'collation' => 'utf8mb4_unicode_ci',
'collation' => env('DB_COLLATION', 'utf8mb4_bin'),
次にテーブルの作成を行っていきましょう!
Laravelのマイグレーション機能でテーブルを作成する手順
では、いよいよマイグレーション機能に触れていきましょう。
最初に説明したとおり、マイグレーション機能はテーブルの作成やカラム追加など、データベースの変更を管理する機能です。
マイグレーション機能でテーブルの作成を実行する手順は、おおまかに以下の2つです。
- 「マイグレーションファイル」を作成する
- Artisanコマンドで実行する
順に詳しく解説していきます。
今回作成したいテーブル構成
名前 | タイプ | その他設定 |
id | int | 主キー |
login_id | varchar(50) | ユニーク |
password | varchar | – |
created_at | timestamp | – |
updated_at | timestamp | – |
手順1:マイグレーションファイルを新規作成
artisanコマンドで、マイグレーションファイルを新規作成します。
マイグレーションファイルを作るコマンドは以下のとおりです。
php artisan make:migration create_[テーブル名]_table
今回のテーブル名は「managers」なので、以下のコマンドになります。
php artisan make:migration create_managers_table
「create_」と「_table」に挟まれた箇所がテーブル名です。
VSCodeのターミナルで実行してみましょう。
ターミナルに以下の表示が出たら、マイグレーションファイルの新規作成は完了です。
手順2:マイグレーションファイルの編集
次に作成したマイグレーションファイルを編集しましょう!
マイグレーションファイルは以下のフォルダに入ってます。
「C:\xampp\htdocs\test-laravel\database\migrations」ですね。
生成した年月日によってファイル名は変わりますので注意してください。
ファイル名は「[年]_[月]_[日]_[時分秒]_create_[テーブル名]_table.php」になっています。
先程作ったマイグレーションファイルをクリックします。
初期の中身は以下のようになってます。
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('managers', function (Blueprint $table) {
$table->id();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('managers');
}
};
up()とdown()の2つのメソッドが確認できますね。
マイグレーション実行時にはup()が呼び出されます。
up()の中に「Schema::create」がありますね!
ここでテーブルの作成(CREATE文の代わり)ができます。
では、このup()の中を作りたいテーブル構成に編集していきます。
public function up()
{
Schema::create('managers', function (Blueprint $table) {
$table->increments('id')->comment('主キー');
$table->string("login_id", 50)->unique()->comment('ログインID');
$table->string("password")->comment('パスワード');
$table->timestamps();
});
}
「 $table->」の後ろは、カラムの定義ですね
例えば、よく使うカラムだけ紹介しますが、以下のように書きます。
$table->increments('id') // PRIMARY
$table->integer('id'); // INTEGER
$table->unsignedInteger('name'); // INT
$table->string('name', 100); // VARCHAR
$table->char('name', 100); // CHAR
$table->text('name'); // TEXT
ここらへんはテーブルを作成する都度、調べてみてください。
また「$table->timestamps();」は「created_at」と「updated_at」のカラムが作成されます。
手順3:マイグレーションファイルの実行
では、作成したマイグレーションファイルをコマンドを使って実行してみましょう!
実行コマンドは以下の通りです。
php artisan migrate
VSCodeのターミナルで実行します。
以下の表示になったら、コマンドの実行は無事に終わりました!
手順4:作成したテーブルの確認
次にちゃんとテーブルが作成されたか、phpMyAdminでデータベース「laravel_test」を確認してみましょう。
phpMyAdminを開くと「managers」テーブルのほかにも、「複数の」テーブルが作成されているのを確認できるはずです。
「managers」テーブルの中身も確認してみましょう。
「managers」をクリックしてみてください。
設定したカラムが表示されていますね。
これでLaravelのマイグレーション機能を使ったテーブルの作成は終わりです。
マイグレーションを実行前に戻す方法
作られたテーブルを確認してみたら「あ!このカラムを忘れてた!」「設定間違えた!」と慌てることはよくあります。
その場合、ロールバック機能を使うと実行前に戻せるので活用しましょう!
ロールバック機能は以下のコマンドを実行します。
# 最後に実行したマイグレーションを元に戻す
php artisan migrate:rollback
# 戻す数を指定する
php artisan migrate:rollback --step=3
# 全部のマイグレーションを戻す
php artisan migrate:reset
試しに、先ほど実行したマイグレーションを戻してみます。
手順1:ロールバックのコマンドを実行
php artisan migrate:rollback
VSCodeのターミナルで実行します。
手順2:phpMyAdminで確認する
phpMyAdminでデータベース「laravel_test」を見てみましょう!
「migrations」テーブル以外の削除が確認できました。
「migrations」テーブルは実行済みのマイグレーションファイル名が格納されています。
全部のマイグレーションを戻しても、デフォルトのまま残ります。
これで間違えてもすぐに戻せるので安心して、マイグレーション機能を実行できますね!
さいごに
今回は入門編3としてデータベースの接続方法と、Laravelのマイグレーション機能を使ったテーブルの作成方法を紹介しました。
SQL文を覚える必要がないうえに、ロールバックで実行前に戻せるので、とても便利な機能です。
しかしプログラムの開発に慣れている人にとって、「SQL文を実行した方が早い」と感じるかもしれませんね。
ほかに開発している人がいる場合、マイグレーション機能を実行するだけで同じテーブルの作成が行えるので共同開発の時にとても便利です。
ぜひマイグレーション機能を使いこなしてみましょう!
次は「MVC」の「M」を絡めた記事をお届けします。
ぜひ次の記事もよろしくお願いします。
コメント