例えばECサイトとか、DBでマスタテーブルがあったりします。
なんでもいいんですが、サイズテーブルとカラーテーブルがあったとしましょう。
プロダクトテーブルは、サイズテーブルとカラーテーブルを参照します。
プロダクトテーブルが、size_idとcolor_idを持ってるイメージ。
で、ローカル開発環境、ステージング環境、本番環境の3つがあったとします。
oliコマンドでappが保有するmigrationsにDBスキーマを管理させることはできますので
各3環境でのmigration実行時には問題なくスキーマを再現することができると思います。
で、問題は、どうやってデータ(レコード)を各環境に取り込むかってところで悩んでいます。
各環境というか、今は一人開発なのでいいのですが、例えばパートナーのエンジニアに手伝ってもらうケースがあったとします。
git管理なので、gitで管理してるURL教えて、普通にcloneしてもらってcomposer updateすれば現在の最新の状態から開発してもらうことはできますが、マスタテーブルのデータ(レコード)ってどうやって管理しようかってところです。
userテーブルとかトランザクション系のテーブルはいいのですが、マスターテーブルはどうやって共有(?)すればいいんだろうと、、、
dumpとってSQL実行してもらえば一応やりたいことはできますが、migrationみたいにfuelphpが持ってる機能を使って実現したいです。
新規エンジニアがアサインしたときのローカル開発環境もそうですが、ステージングや本番などにも使える仕組みを作りたいのです。
マスタのデータが数件増えたら、ローカル→ステージング→本番、へと各フェーズで確認する際に各環境でも
php oil refine migrate
ってやるだけで必要なデータはinsertされるようにしたいんです。
目的として、色々手順を増やしたくないです。
他の現場はどうしてるんだろう。。。
下記のようにmigrationsフォルダにあるファイルは実行されることに便乗して単純にinsert走らせるだけでも問題ないですかね。。。
<?php namespace Fuel\Migrations; class Create_posts { public function up() { \DBUtil::create_table('posts', array( 'id' => array('constraint' => 11, 'type' => 'int'), 'title' => array('constraint' => 50, 'type' => 'varchar'), 'body' => array('type' => 'text'), 'tuika' => array('constraint' => 11, 'type' => 'int'), 'created_at' => array('constraint' => 11, 'type' => 'int', 'null' => true), 'updated_at' => array('constraint' => 11, 'type' => 'int', 'null' => true), ), array('id')); //追加 $connection = Database_Connection::instance(static::$_write_connection); $sql = ' insert マスタデータ1 insert マスタデータ2 '; $query = DB::query($sql); $query->execute($connection); } public function down() { \DBUtil::drop_table('posts'); } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。