はじめに
前回構築した環境でデータベースをいじっていきます。もともとあるデータベースにテーブルを追加したりカラムを追加したりするのでデータベースの作成などは書いていません。
laravelでのデータベースの扱い
まずlaravelにおいてのデータベースの扱いなのですが、これはmigration(マイグレーション)というデータベースの作成や管理をするものがあります。
migration
migrationとは
公式には
マイグレーションとはデータベースのバージョンコントロールのような機能です。アプリケーションデータベースのスキーマの更新をチームで簡単に共有できるようにしてくれます。マイグレーションは基本的にLaravelのスキーマビルダとペアで使い、アプリケーションのデータベーススキーマの作成を楽にしてくれます。もしあなたが今まで、チームメイトに彼らのローカルデータベーススキーマに手作業でカラムを追加するよう依頼したことがあるなら、データベースマイグレーションは、そうした問題を解決してくれます。
と書いてあるのですが、自分にはなんのこっちゃかわかりません。要約すると
-
データベースをバージョンコントロールできる
-
チーム開発でスキーマの更新が簡単
-
laravelのスキーマビルダとペアで使うもの
-
データベーススキーマの作成が楽
ということでしょうか?
migrationの構造
マイグレーションにはup
とdown
の2つのメソッドがあり、upはテーブルやカラム、インデックスなどをデータベースに新しく追加するために使い、downはupが行った操作を元に戻すものを記述します。
テーブルを作成をする
テーブルを作るためのファイル生成
まずここで詰まりました。
新しいテーブルを追加するにはartisan
ができる場所で
php artisan make:migration ファイル名
をしてテーブルを作成するためのファイルを作らなければなりません。
例えばUsersテーブルを作りたい場合は
php artisan make:migration create_users_table
のようにしてテーブルを作ります。
するとdatabase/migrations
にテーブルを追加する内容を書くファイルが生成されます。
※ファイルを勝手に自分で作ってもダメです(作っていた)。
テーブル内容の記述
生成されたファイルのup
に追加したいものを記述します。新しいテーブルを追加する場合は
public function up()
{
Schema::create('テーブル名', function (Blueprint $table) {
カラム名や属性等を書く
});
}
のように書きます。
例えばusersテーブル生成時にidと名前のカラムを作りたい場合は
public function up()
{
Schema::create('Users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
});
}
と書きます。
downメソッドには
カラムの変更
カラムの変更や追加をするときもテーブルの作成をしたときと同様新しいファイルを作らなければなりません。(database/にadd~というファイルがあるからといってそこに書き足しても読み込まれません)
php artisan make:migration ファイル名
例えば先ほど作ったテーブルにテキストカラムを追加するには
php artisan make:migration add_text
でファイルを作成後書いてきます。。
public function up()
{
Schema::table('Users', function (Blueprint $table) {
$table->text('text');
});
}
public function down()
{
Schema::table('Users', function($table) {
$table->dropColumn('text');
});
}
さいごに
https://readouble.com/laravel/5.3/ja/migrations.html
ここを読めば大体の事はできます。