追記:2020/06/09
本記事で説明で利用しているリポジトリのmigrations-generator(Xethron)はLarvel5.4までの対応でした。
それ以降のバージョンはmigrations-generator(oscarafdev)のリポジトリで対応しているようです。(Xethron側の色々なissueで書いてあった)
oscarafdevの方リポジトリでXethronの方がコミットしているので正式に引き継いだのではなかろうか。
自分は試して無いので、どなたか試してコメント頂くか、別な記事にして頂けるとありがたいです。
追記:2020/06/09ここまで
経緯
- 運用中のサービスをDBはそのままでAPI用のPHPフレームワークをLaravelに差し替える事になった。
- テーブルの数が100を超えていてとても手書きでmigrationを書く気が無い
- 色々なmigrationsに関する記事を確認しても新規サービスを想定している
- 困った。(^_^;)
Laravel用パッケージ「migrations-generator」
- migrations-generator
- Laravel5、Laravel4に対応。(4の方は自分は未確認)
- 既存のテーブルのマイグレーションファイルを作成してくれる。
- 使い方簡単
環境とか
確認した自分の環境
- Mac OSX Yosemite
- vagrant CentOS 7.2
- DB pgsql 9.3
- Laravel 5.2
使い方
githubのreadmeの通り。一応ここでも手順を書く。
インストール
composer require --dev --no-update "xethron/migrations-generator:dev-l5"
composer require --dev --no-update "way/generators:dev-feature/laravel-five-stable"
composer config repositories.repo-name git "git@github.com:jamisonvalenta/Laravel-4-Generators.git"
composer update
composer update
の実行時に何やらTokenを入力しろ的な感じになった。
ctl+c
で処理を停止。
githubの認証登録
調べてみるとgithubの認証が無い模様。
composerでGitHub apiのアクセス制限対処法を参考に以下を実行
curl -u '[user name]' -d '{"scopes":["repo"],"note":"Help example"}' https://api.github.com/authorizations
[user name]
は自分のgithubのユーザ名を入れる。続けてパスワードを入力する。
認証に成功するとtoken
を含むjsonが返ってくる
コンポーザーにgithubのトークンを登録する為に以下を実行
composer config -g github-oauth.github.com [get token]
[get token]
はjsonの中身のtoken
を入れる。
改めてインストール
composer update
を実行。今度はインストールされる。
Laravelの設定
app.phpのproviders配列に以下を追加
Way\Generators\GeneratorsServiceProvider::class,
Xethron\MigrationsGenerator\MigrationsGeneratorServiceProvider::class,
マイグレーションファイルの作成
用意が出来たのでマイグレーションファイルの作成をする。ここではDBの接続の設定が完了しているものとします。
単純に全てのテーブルのマイグレーションファイルを作成
php artisan migrate:generate
無視するテーブルを指定してマイグレーションファイルを作成
自分はusers
とpassword_resets
テーブルをマイグレーションから作成してしまった。この2つを無視する場合は以下をignore
オプションを付けて実行
php artisan migrate:generate --ignore="users,password_resets"
Do you want to log these migrations in the migrations table? [Y/n] :
> Y
Next Batch Number is: 2. We recommend using Batch Number 0 so that it becomes the "first" migration [Default: 0] :
> 0
処理を待つとマイグレーションファイルの出来上がりです。
補足
「connection」オプションもある模様。自分は試して無いです。
以上です。なにか間違いや意見などあればコメントか編集リクエストお願いします。