質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Framework

Frameworkは、アプリケーションソフトを開発する際に、一般的な機能をより簡単に、より早く完了させる事を目的とした、ソフトウェアやライブラリのセットを指します。開発にフレームワークを使用する事で、追加で必要となる機能だけを開発するだけで済む為、開発効率の向上が見込めます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

Q&A

解決済

1回答

871閲覧

FuelPHP migration テーブル作成はもちろん、マスタなどのデータ登録はどうするか

earnest_gay

総合スコア615

Framework

Frameworkは、アプリケーションソフトを開発する際に、一般的な機能をより簡単に、より早く完了させる事を目的とした、ソフトウェアやライブラリのセットを指します。開発にフレームワークを使用する事で、追加で必要となる機能だけを開発するだけで済む為、開発効率の向上が見込めます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

0グッド

0クリップ

投稿2018/03/11 14:59

編集2018/03/11 15:12

例えば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'); } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

DB側でトリガー使う。

投稿2018/04/03 16:54

earnest_gay

総合スコア615

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問