Laravelアプリ運用中にDBのレコード更新が必要になった場合、皆さんはどのように対応されていますか?
気になっていること
- Laravelアプリ運用中に
DBのレコード更新が必要になった場合
、皆さんはどのように対応されていますでしょうか?
前提
-
DBのレコード更新
は以下のようなケースを指しています こんな質問をしておきながら申し訳ありませんが、極論
ケースバイケース
だと思うのであまり口調を強めず私はこういう理由でこの方法を使うことが多いです
というような回答を頂けますと幸いです🙇
実経験、及びその他個人的に思いつく方法
以下が上記の補足になります
項目 | 補足 |
---|---|
Laravel内 / 外 | Laravelアプリケーション内で処理を行うかどうかになります |
migrate |
artisan migrate で処理を行うものを指しています |
console |
artisan app:xxx で処理を行うものを指しています |
SQL | 以下のようなものを指しています |
Eloquent | 以下のようなものを指しています |
それぞれの方法に対して個人的に思いつくプロコン
パッと思ったものを書き出したので過不足あると思いますが、個人的にはこのあたりかなと考えています。
項目 | Pros | Cons |
---|---|---|
Laravel内のプロコン (外は逆) |
単一リポジトリのGit管理下でデータマイグレーション履歴が一通り確認できる | Laravelアプリ外にも影響を及ぼす場合にハンドリングしきれない |
migrate (consoleは逆) |
CI/CDでそのまま実行されるため、追加で手動作業を行う必要がない | エラー発生時などのリカバリ、リストアが困難になる可能性がある |
SQL (Eloquentは逆) |
app配下内の状態に依存しないため、常に正常に動作する(はず) 上記Eloquentの画像の場合、例えばArticleモデルがPostモデルにリネームされると処理が動かなくなる |
SQLのみで実装すると複雑度が増してしまう可能性がある |
個人的な意見
- 以下の方法は後々面倒になる可能性があるため、できる限りやらないほうが良いのかなと思います
- Laravel内 -> migrate -> Eloquent
- 上記以外の方法はいずれも一長一短なので一概には言えないかなと思いますが、個人的には特別な制約がない限り以下の方法で良いのかなと考えています
- Laravel内 -> migrate -> SQL
さいごに
前提にも記載したとおり極論ケースバイケースだと思うので、野暮な質問かなとも思いつつ、ある程度デファクトになっている方法があればそれはそれで気になるなと思い投稿させて頂きました🙇
0