こんにちは、コバヤシです。
今回はLaravel5.5以降でデータベースからマイグレーションファイルを作成する方法について書きます。
DB->マイグレーションファイル
以前はXethron /migrations-generator があって便利に使っていたのですが、これってLaravel5.4まで対応なんですよね。
最近のLaravelで使えずどうしたものかと思ったら、後継が出ていました。
今回はこれを使っていきたいと思います。
インストール
まずインストールします。
composer require oscarafdev/migrations-generator --dev
あれ、
Allowed memory size of 1610612736 bytes
のエラーが出てインストール出来ませんでした。。
一時的にメモリ制限を解除してインストールします。
COMPOSER_MEMORY_LIMIT=-1 composer require oscarafdev/migrations-generator --dev
今度は問題なくインストールが終わりました。
マイグレーションファイルを作成
インストールが出来たので、DBからマイグレーションを作っていきます。
php artisan migrate:generate Do you want to log these migrations in the migrations table? [Y/n] : >
マイグレーションファイルを作って良いか聞かれるのでYを入力します。
Number is: 1. We recommend using Batch Number 0 so that it becomes the "first" migration [Default: 0]
マイグレーションのバッチ番号を聞かれるので、Laravelでマイグレーションを実行していない場合はそのままリターンでOKです。 実行済みの場合は適切な番号を入力しましょう。
マイグレーションファイルが作成されます。
マイグレーションファイルの確認
マイグレーションファイルを確認してみます。 Laravel標準のセッションテーブルをサンプルに作成してみたので見てみます。
Schema::create('sessions', function(Blueprint $table) { $table->string(''id'', 191)->unique(); $table->bigInteger('user_id')->unsigned()->nullable(); $table->string(''ip_address'', 45)->nullable(); $table->text('user_agent')->nullable(); $table->text('payload'); $table->integer('last_activity'); });
・・・。
なんだか微妙ですね。unsignedBigIntegerがあるのにunsigned()を使用していたりします。
いやそれよりも、そのままではエラーになります。「''id''」などシングルクォートが連続で入っています。
手直しするのは、一からマイグレーションファイルを作成するよりは楽なので良いのですが
このあたりは早く直してほしいところですね。
作成するテーブルを指定する
マイグレーションファイルを作成するテーブルを指定するには以下のようにします。
php artisan migrate:generate sessions
作成しないテーブルを指定する
逆にマイグレーションファイルを作成しないテーブルを指定するには以下のようにします。
php artisan migrate:generate --ignore="sessions"
まとめ
バグはありましたが、何とか使える感じでしょうか。 早期に直してもらって、どんどん使っていけたらと思います。