- モジュール関連ドキュメント
FuelPHP で modules 利用時の config 設定
一度、config まわりを理解してしまえば当然という設定方法ですが、上記ドキュメントを読んだだけでは、スムーズにいかずあれこれ試したので、ここで備忘録的に整理しておきます。
今回は、特に DB まわりの設定です。DB は複数利用します。
やりたいこと
- app とは別に共通利用したい platform モジュールを分割
- app で利用する db の設定は、通常通り app/config/db.php や app/config/(環境)/db.php で管理
- module で利用する db の設定は、通常通り module/platform/config/db.php や module/platform/config/(環境)/db.php で管理
- 上記設定状態で、通常通り app 内で app 用 DB にアクセス、module 内で module 用 DB にアクセス
- イメージとしては、組み込んだ共通モジュール platform の設定を app の config/config.php に設定するだけで問題なく利用できる。
設定方法(modules 側)
app の config と同じルールで module/platform/config 配下を設定します。
設定方法(app 側)
app/config/config.php で下記設定をします。(ここが重要でした。。。)
'always_load' => array(
'modules' => array
'platform'
),
'config' => array(
'platform::db' => 'db',
),
),
DB 利用方法
-
参考
-
app 側 DB 設定名(connection名)が 'mysql_app' の場合
$result = DB::query('SELECT * FROM
users
', DB::SELECT)->execute('mysql_app');
- app 側 DB 設定名(connection名)が 'mysql_platform' の場合
$result = DB::query('SELECT * FROM
users
', DB::SELECT)->execute('mysql_platform');
まとめ
最初、config の設定で「'platform::db' => 'db',」とdb スペースに突っ込むことに気がつかず、ソース読んだりして config の読み込みまわりを理解して解決しました。config 設定場所にもこう設定するようにと例は書いてあったのですが、modules に分割してしまって、自分の中で混乱していたようです。スマートに設定できて良かったです。