Migrateの作成(Laravelでウェブアプリを作ろう③)


Migrate(マイグレート)

Migrateは、データベースのテーブルに関する情報を設定するファイルで、テーブルごとに作成します。
テーブルにはどんなカラム(フィールド)があって、そのカラムにはどんな情報が付与されるのかを設定します。

Migrateの作成

手動でも作成は行えますが、コマンドで実行する方が確実です。
注意点としては、Migrateを複数作成した場合、一括実行を行うと実行される順番はファイルを作成した順番になります。
そのため外部キーの設定をする場合に参照するテーブルを先に生成しておかないとエラーになるため注意が必要です。

php artisan make:migration create_テーブル名_table --create=テーブル名

作成されたファイルは[database>migrations]に格納されます。
デフォルトで3つファイルが作成されています。

[public function up()]こちらのメソッドに、テーブルの作成時に行いたい処理を記載します。
記載の仕方は以下のようになります。

2014_10_12_000000_create_users_table.php
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

よく使うカラムのキーやそのほかの情報については以下を参照してください

//文字列
$table->string('カラム名', バイト数);

//数字
$table->integer('カラム名');

//正の数のみ
$table->unsignedInteger('カラム名');

//真偽値
$table->boolean('is_archived')

//作成日及び更新日
$table->timestamps();

//インクリメント
$table->increments('カラム名');

//nullを許容する(デフォルトではnotnullになっている)
$table->型名('カラム名')->nullable();

//デフォルト値の設定
$table->型名('カラム名')->default();

//プライマリーキー(idをincrementsにした時点で自動的にprimarykeyになっているため基本的には不要)
$table->primarykey(['カラム名']);

//ユニークキー
$table->unique(['カラム名']);

//外部キー
$table->foreign('参照元のカラム名')->references('参照先のカラム名')->on('参照先のテーブル');

Migration(マイグレーション)

Migrationにはコマンドで実行します

ローカル環境でMigration
php artisan migrate
docker環境でMigration
docker-compose exec app php artisan migrate

テーブルが追加されていれば成功です

補足

詳しくは記載しませんが、MySQL接続の際のコマンドです

dockerのコンテナ名の確認
docker ps
docker環境でMySQLに接続するコマンド
docker exec -it コンテナ名 mysql -u ログインユーザー名 -p