私は CodeIgniter を使用しており、それぞれに 3 つのテーブルとモデルがあります。
- ユーザー - ユーザーの表
- 製品 - 製品の表
- UserProduct - どのユーザーがどの製品を持っているかを示すテーブル (2 つの外部キー列、および日付などの他の列)
私のコードでは、特定のユーザーが持っている製品を示すリストを表示したいと考えています。したがって、userId に一致する UserProduct テーブルで選択を行う UserProduct クラスのメソッドと、各製品について必要なすべてのデータを取り込む結合があります。
これは問題なく機能しますが、密結合の道を進んでいることが心配です。たとえば、商品画像の URL を知りたいとします。これを返すためのメソッドが製品モデルにあり、UserProduct モデルに重複したメソッドは必要ありません。また、UserProduct モデルが他のモデルのメソッドにアクセスしようとすることでカップリングを作成したくありません (これは私がCodeIgniter があなたのことを好きだとは思わないでください)。
この問題は、モデルが親テーブルからのデータを必要とし、それを操作したい場合に、外部キーを持つ DB テーブルにアクセスするすべてのモデルで発生する可能性があります。
洗練された解決策はありますか、それとも外部キーが必然的にモデル内の結合を作成すること、またはモデル間で同様の方法が必要であることを受け入れる必要がありますか?
TIA、フィル。