2018-10-24に更新

CakePHP3とLaravel5のマイグレーション比較

phpのフレームワークには大体マイグレーション機能がついている。
業務でアプリケーション開発を行う時は各開発者のローカルの開発環境、サーバー上の開発環境、ステージング環境、本番環境などと分かれていたりするため、
そういった場合はマイグレーションを使用すると本当に楽。

なので使うのは使うのだが、正直あまり好きではない。
rollbackして再度migrateしたら一度データは消えてしまうし、
本当はRidgepoleのように完成形だけ保存して勝手にその形に合わせて欲しいというのが本音。

ただ、必ずしもそうできるというわけではないので、それでも使うのであればなるべく楽したい、
ということでCakePHP3のマイグレーションの便利さをLaravel5と比較してみる。

Laravel5のマイグレーション

Laravelのマイグレーションは必要なものは揃っていて、基本という感じ。
seedもあるのでデータの初期化もできる。

雛形作成

php artisan make:migration add_votes_to_users_table --table=users
php artisan make:migration create_users_table --create=users

実際の処理書き込み

$table->string('name')->nullabel()->after('id');

実行

php artisan migrate

特に迷うこともなく簡単。
その他にもいくつか機能はある。

CakePHP3のマイグレーション

基本的なところは大して変わらない。
だが、いくつか便利なものがある。

差分から勝手にマイグレーションファイル作成

なんと、最後のマイグレーションと現在の構成を比較し、
勝手にマイグレーションファイルを作成してくれる。
phpMyAdminで適当にカラム追加したり調整したりして
最後に実行すればいいだけ。すごく楽。

bin/cake bake migration_diff AddFlagToTable

afterだけ自動ではないので自分であとで付ける。

これも間違いがあった場合はrollbackで戻せる。

またこの機能のため、現在の構成をダンプデータとして保存しておいたり、
マイグレーション済みとしてマーキングしたりすることも可能なので
適宜その時の状態に応じて調整できる。

マイグレーション無しで進めてしまったアプリケーションも後付でマイグレーション方式に変更できる。

コード書く量を減らして早く仕事を終わらせよう。

ツイッターでシェア
みんなに共有、忘れないようにメモ

だら@Crieit開発者

Crieitの開発者です。 Webエンジニアです(在宅)。大体10年ちょい。 記事でわかりにくいところがあればDMで質問していただくか、案件発注してください。 業務依頼、同業種の方からのコンタクトなどお気軽にご連絡ください。 業務経験有:PHP, MySQL, Laravel, React, Flutter, Vue.js, Node, RoR 趣味:Elixir, Phoenix, Nuxt, Express, GCP, AWS等色々 PHPフレームワークちいたんの作者

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント