Help us understand the problem. What is going on with this article?

FuelPHP で modules 利用時の config 設定について整理

More than 5 years have passed since last update.

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 に分割してしまって、自分の中で混乱していたようです。スマートに設定できて良かったです。

hmukaida
willgroup
個と組織をポジティブに変革する「チェンジエージェントグループ」
https://willgroup.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away