2

サイトに表示する前に、さまざまな Web サービス + 自分のデータベースからデータを取得し、これらのデータを結合する必要があります。

これを行うための最良の方法は何ですか? 私は、Web サービスとデータベース用に別々のモデルを作成することを好みます。さまざまなデータ ソースのモデル クラスをさまざまなフォルダーに整理するにはどうすればよいですか?

後でさらに Web サービスを追加する可能性があります。

4

2 に答える 2

3

編集:同じ名前のモデルを持つことはできないため、以下の例は機能しないため、本当に申し訳ありません。次のように、サブディレクトリにもプレフィックスを付ける必要があります。

  1. webservice1/ws1_products
  2. webservice2/ws2_products
  3. デシベル/デシベル製品
  4. 製品

そうすれば、それらを次のようにロードします

$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 つのモデルを作成します。

  1. webservice1/製品
  2. webservice2/製品
  3. デシベル/製品
  4. 製品 // それらを 1 つの結果に結合するモデル

そうすれば、コントローラーからproductsモデルへのリクエストを 1 つだけ行う必要があります。

于 2012-07-06T20:45:39.900 に答える
2

通常、データ ソースごとに 1 つのモデル ファイルを作成します。DB テーブル、Web サービスなど。

レンダリングする前に 2 つ以上のモデルからのデータを結合する場合、ビジネス ロジックが関係している場合は、コントローラーで行うのが好きです。そうでない場合は、モデルで正しく実行します(CI2でモデルを別のモデルからロードできるようになりました)

于 2012-07-06T20:25:37.617 に答える