Laravelでのマイグレーションファイル作成からマイグレーション実行、DBの確認までを行う


今回この記事はLaravelでWEBサービスを開発するにあたって必要になってくる
DB周りのことについてわからないことだらけで解説されているソースもあったのですが
少し理解するのに時間がかかるのでできるだけ簡潔に一連の流れで開発を行えるように
書いていきたいと思います。

Laravelのmigration(マイグレーション)機能とスキーマビルダを使ってデータベースのテーブルやカラムを管理する一連の流れを行います
・ルートディレクトリはlaravel

アジェンダ
1.開発環境
2.マイグレーションについて
3.データベース接続確認
4.マイグレーションファイルの生成
5.マイグレーションクラス実装
a.スキーマビルダ
b.カラムタイプ
6.マイグレーション実行
7.ロールバック

DBの接続確認

自分自身こののちに行うマイグレーションを行うときに頻繁に
DBの接続エラーが出てしまいました。
その原因は.envファイルとconfig/database.phpとMysqlこの3つのユーザー名とパスワードが一致していなかったということでした。
大体のマイグレーションのエラーがこの接続エラーらしいので
これを押さえておけばこのコマンドでのエラーは大方防げるのではと思います。

まず.envファイル

laravel/.env

DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel :データベース名
DB_USERNAME=root  :ユーザ名
DB_PASSWORD=root  :パスワード`

config/database.php

'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'engilio'),:データベース名
            'username' => env('DB_USERNAME', 'root'),   :ユーザ名
            'password' => env('DB_PASSWORD', 'root'),   :パスワード

このように両ファイルの設定を確実にMysqlのユーザー名、パスワードに設定します。
意外と忘れがちなのでこれで再確認できればいいかと思います。

マイグレーションファイルの生成

php artisan make:migration create_[ここにテーブル名]_table  --create=[テーブル名]

このようにコマンドを打つことでマイグレーションファイルが作成されます。

これによってできたファイルは
laravel/database/migrationsのフォルダに入ります。

マイグレーションクラスの実装

生成されたマイグレーションフォルダのエディターで開いてみます。


use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateTestTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('tests', function (Blueprint $table) {
            $table->increments('id');
            $table->timestamps(); 
            →ここにカラムの修飾を行う
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('tests');
    }
}

マイグレーション実行

php artisan migrate

このコマンドでマイグレーション実行を行う

実行後、MysqlでDBを確認する

mysql -u root -p root;

mysql> show columns from [テーブル名];