モジュールが FuelPHP を使用して他のモジュールの ORM モデルと対話する方法を探しています。
たとえば、 というタイトルのモジュールがある場合products
、製品テーブルなどから製品が選択されるというデフォルトの動作が付属しています。それで問題ありません。
私が解決しようとしている問題は、常に存在する場合とそうでない場合があるモジュール/パッケージが製品モジュールと対話できるようにすることです。
たとえば、inventory
モジュールを有効にした場合、その場で製品モデルに関係を追加して、Model_Product::find()->get()
必要に応じて在庫情報を取得できるように拡張できるようにする必要があります。したがって、上記のコードは次のように変更できます
Model_Product::find()->related('inventory')->get()
related('inventory')
これは、インベントリ モジュールがロードされていない (そしてリレーションシップが作成されていない) 場合に、コード内のへの呼び出しが例外をスローするというさらなる問題を示しています。
概念的には、モジュールを相互作用させる方法を見つけるのに苦労しています。
モデルで以下のようなメソッドを作成することで、最初の問題を解決できると思います
public static function _init()
{
$data = array(
'_has_many' => static::$_has_many,
[...]
);
$additional_relationships = \Event::trigger('event_name', $data, 'array');
foreach($additional_relationships as $key => $value)
{
static::$$key = $value;
}
}
しかし、これは理想的とは言えません。また、2番目の問題も解決しません。