0

コードイグナイターモデルでこの結合を使用しています

 $this->db->select('e.name, p.projects');
      $this->db->from('example as e');
      $this->db->join('procure as p', e.id = p.id');
      $this->db->where('e.cityid', '1');
      $this->db->where('e.status', '0');

結合用の別のテーブルがありません。これが私のデータマッパーです。これは出力を提供していません。

2 つのテーブルがあり、それらに結合クエリを記述したいと考えています。これはコントローラーにあります。

   $example = new Example();
      $example ->where_join_field('procure', FALSE);

アップデート

データ マッパーを使用して 3 つのテーブルを結合するためのスニペットを見せてもらえますか。

4

1 に答える 1

0

一般に、DMZ モデルを手動で結合することはありません (それでも、生成された SQL は結合を使用します)。あなたが探しているのは関係です。

$has_oneおよび$has_many属性を使用し、命名規則を守り、多対多に必要なテーブルを作成して、モデルの関係を設定する必要があります。これらについては、ドキュメントhereおよびhereで読むことができます。

モデルをセットアップしたら、以前に結合を使用したメソッドwhere_relatedとメソッドを使用できます。include_related

  1. where_relatedは、関連するモデルのフィールド値でクエリを実行しているモデルをフィルタリングする場合に使用します。したがって、クラスに関連するproject設定がある場合は、次のExampleように記述できます->where_related('project', 'procure', false)Example関連するプロジェクトのプロシージャ フィールドに基づいて、返されたインスタンスをフィルター処理します。whereしたがって、基本的には、 SQL 句に入れる条件と同じです。

  2. include_relatedは、関連するモデルまたはインスタンス全体のフィールドを含めたい場合に使用します。したがって、インスタンスを->include_related('project', 'projects')クエリするときに書き込むと、返されたインスタンスの属性になります。これらの属性の作成方法を制御するための多くのオプションがあります。基本的に、これらはSQL 句に入れるフィールドです。Exampleproject_projectsselect

すべての名前付き関係と他の多くのオプションに対して作成された魔法のメソッドがあります。開始するにはドキュメントのGet (Advanced)ページを参照してください。関係を説明する他の ページ を自由に探索してください。

于 2013-04-13T18:52:27.740 に答える