サイトに表示する前に、さまざまな Web サービス + 自分のデータベースからデータを取得し、これらのデータを結合する必要があります。
これを行うための最良の方法は何ですか? 私は、Web サービスとデータベース用に別々のモデルを作成することを好みます。さまざまなデータ ソースのモデル クラスをさまざまなフォルダーに整理するにはどうすればよいですか?
後でさらに Web サービスを追加する可能性があります。
サイトに表示する前に、さまざまな Web サービス + 自分のデータベースからデータを取得し、これらのデータを結合する必要があります。
これを行うための最良の方法は何ですか? 私は、Web サービスとデータベース用に別々のモデルを作成することを好みます。さまざまなデータ ソースのモデル クラスをさまざまなフォルダーに整理するにはどうすればよいですか?
後でさらに Web サービスを追加する可能性があります。
編集:同じ名前のモデルを持つことはできないため、以下の例は機能しないため、本当に申し訳ありません。次のように、サブディレクトリにもプレフィックスを付ける必要があります。
そうすれば、それらを次のようにロードします
$this->load->model('webservice1/ws1_products');
$this->load->model('webservice2/ws2_products');
$this->load->model('db/db_products');
$this->load->model('products');
そして次のように使用します
$x = $this->ws1_products->getAll();
$x = $this->ws2_products->getAll();
$x = $this->db_products->getAll();
$x = $this->products->getAll(); // combined result
編集終了。
それらを異なるフォルダーに分けるには、models
ディレクトリ内のサブフォルダーに配置してから、共通の構文を使用します$this->load->model('web_service1/products');
。
好みの問題なので、最善の方法はわかりませんが、私があなただったら、あなたが言ったように2つの異なるモデルでそれらを分離し、3つ目のモデルを作成して、それらを1つの結果に結合します. したがって、2 つの異なるサービスとデータベースから製品を取得する必要がある場合は、4 つのモデルを作成します。
そうすれば、コントローラーからproducts
モデルへのリクエストを 1 つだけ行う必要があります。
通常、データ ソースごとに 1 つのモデル ファイルを作成します。DB テーブル、Web サービスなど。
レンダリングする前に 2 つ以上のモデルからのデータを結合する場合、ビジネス ロジックが関係している場合は、コントローラーで行うのが好きです。そうでない場合は、モデルで正しく実行します(CI2でモデルを別のモデルからロードできるようになりました)