今回は、migration(マイグレーション)について解説していきます。
「migration」はデータベースを作成する部分です。
ここからはMySQLのデータと連携させつつ、解説を進めていきたいと思います。
Laravelについてよくわからないや。。。という方は、以下を併せて読んでいただけるとご理解いただけると思います。
Laravelとは?現在の、PHPフレームワークの筆頭として大活躍 (akihisa-h.com)
マイグレーションとは
まずマイグレーションとは何か?を解説していきます。
英語でいうと「migrate」=「移住する」、「migration」=「移住」という意味になります。
Laravelの世界では、Laravel内のデータをMySQLなどのデータベースに反映させることをいいます。
それでは実際にマイグレーションを実行していきたいと思います。
MySQL上にデータベースが作られていることを前提に話を進めます。
次に、Laravelフォルダ内の【.env】ファイルにMySQLの接続情報を登録しておきます。
ローカル環境なら、ユーザー名やパスワードを設定していなければ、データベース名を変更するだけでOKです。
データベースは12行目あたりの【DB_DATABASE=】の部分に入力します。(例では、test という名前のデータベースが作られています)
例) DB_DATABASE=test
新たにテーブルを作成します
Laravelをインストールしたフォルダに移動して、コマンドラインに以下のように入力してEnterキーを押します。
php artisan make : migration create_tests_table
「testsという名前のテーブル用に、マイグレーションファイルを作ってください」という意味になります。
実行すると、「マイグレーションファイルを作りました。」というメッセージが返ってきます。
Created Migration : ~
Laravelをインストールしたフォルダ [database/migrations] 内に、新しくマイグレーションファイルができます。
20xx_xx_xx_xxxxxx create_tests_table.php
マイグレーションファイルは、テーブルを作成したり変更したりするたびに、この場所に作成されていきます。
マイグレーションファイルを編集します
それでは作成したマイグレーションファイルを編集していきます。
まずはテーブルにいれる列(カラム)を入力していきます。
例として、下記の5個の列があるデータテーブルを作成します。
カラム名 | 内容 | データ型 | カラムタイプ |
---|---|---|---|
id | 番号 | bigint | id |
title | 投稿のタイトル | varchar | string |
body | 内容 | text | text |
created_at | 作成日時 | timestamp | timestamp |
updated_at | 更新日時 | timestamp | timestamp |
まずマイグレーションファイルの中身を確認してみましょう。
マイグレーションファイルを開くと、【up】関数の部分に【id】と【timestamp】についてカラム情報ができています。
public function up()
{
Schema :: create('tests', function (Blueprint $table ) {
$table -> id ( );
$table-> timestamps ( );
});
}
※ timestamp は、「データの作成日時」という意味です。
マイグレーションファイルには【timestamps】と複数形で入っておりますが、これで【データの作成日時】と【更新日時】というふたつのカラムを作れます。
デフォルトでは入っていない【title】と【body】の2つのカラムをマイグレーションファイルに追加します。
$table -> id ( ); の下部分に
$table -> string ('title');
$table -> text ('body');
を追加・編集します。
データ型について少し一言
【データの型】とは、どんな種類のデータを入れるかという取り決めです。カラムごとに、データ型を指定します。
MySQLでよく使うデータ型には、次のようなものがあります。
TINYINT | 小さい整数。符号なしの範囲は0から255まで。ユーザー名やパスワードなど、255文字以内におさまるデータに使える。 |
---|---|
INT | 普通のサイズの整数。数字を入れるものに使える。 |
VARCHAR | 可変長文字列。短めのテキストに使える。 |
TIMESTAMP | タイムスタンプ。データベースにデータを更新する際、自動的に現在の日付と時刻を指定できる。 |
TEXT | テキスト情報を入れる。投稿内容などに使える。 |
マイグレーションファイルを編集した後は、マイグレートを実施します。
これは、「マイグレーションファイルで行った変更を、MySQLにも反映させてください」ということになります。
以下のようにコマンドを入力します。
php artisan migrate
実施後は、テーブルが作成できているかをチェックしてみてください。
作成したデータベースの中の【tests】テーブルに、データができていれば、成功です。
テーブルに変更をしたい時
テーブルに変更を加えたい場合の方法について説明していきます。
例として「user_id」というカラムを追加する方法を解説します。
カラムを追加するには、次のコマンドを実行します。
php artisan make:migration add_user_id_to_tests_table --table=tests
実行すると、「マイグレーションファイルを作りました」というコマンドが返ってきます。
up関数に以下の一行を追加します。
$table->unsignedBigInteger('user_id')->after('id');
※ 例では、符号なしBIGINT というデータ型を用いています。foreignId を使用するのも有りかと思います。
削除するときは、down 関数に以下の一文を追加します。
$table->dropColumn('user_id');
※ 「削除時は、user_id 列を削除してください」という命令文になります。
マイグレートの取り消し
実施したマイグレートを取り消したいという時は、ロールバック(Rollback)を行います。
以下のコマンドを実施します。
php artisan migrate:rollback
いかがでしたか。今回はLaravelのマイグレーションについて解説しました。
Laravel おすすめ学習書
Laravelの教科書 バージョン10対応 [ 加藤 じゅんこ ] 価格:3300円 |
きほんからデータベース連携までLaravelがわかる!
PHPフレームワークLaravel入門第2版 [ 掌田津耶乃 ] 価格:3300円 |
PHPフレームワークのロングセラー定番解説書が、新バージョン対応で改訂! 本書は、Laravelのインストールから、フレームワークの中心になるModel-View-Controller(MVC)の使い方、開発に役立つ各種機能をわかりやすく解説した入門書です。新しいディレクティブ(@csrf/@error)、バリデーションルール(増補解説+自作)、Bootstrapによるぺジネーションリンク、Auth(Laravel/uiパッケージ)の使い方などの項目を追加しました!