0

私は頭脳oOで行き止まりに達しましたDBには2つのテーブルがあります:

store_module->caffe_id、module_id、position、order

module->id_module、名前、説明、画像

セット ID (store_module テーブル) のすべてのモジュールを取得するクエリがあり、このクエリ (module_id) に表示されるすべてのモジュールを取得する必要があります。私は何をする必要がありますか?これがコードです (私は 30 時間以上起きていて、脳が私とのコミュニケーションを拒否しています。締め切りが間近に迫っていて、これが私がやらなければならない最後のことの 1 つです。助けてください :D):

function mar_get_modules($id){
            $q = $this->db->get_where('store_module', array('caffe_id' => $id));
            $modules = $q->result_array();
}
4

2 に答える 2

2

通常のクエリを使用して、簡単に始めます (私の推測が正しければ、そこに JOIN が必要です)。
このクエリは機能するはずです:

$sql = "SELECT m.*,sm.* FROM module m
       LEFT JOIN store_module sm ON sm.id_module = m.module_id
       WHERE sm.caffe_id = ?";
return $this->db->query($sql, array($id))->result_array();

これで、AR クエリに変換できます。

$query = $this->db->select('module.*,store_module.*')
                  ->from('module')
                  ->join('store_module', 'store_module.id_module = module.module_id','left')
                  ->where('store_module.caffe_id',$id)
                  ->get();
return $query->result_array();

AR の方が速い場合もありますが、私は通常、バインディングを利用して SQL インジェクションを防ぐクエリを「手動で」作成することを好みます。クエリを目の下に完全に配置すると、物事がどのように機能しているかを確認するのがはるかに簡単になります

于 2012-08-20T20:06:19.190 に答える
0

サーシャ、

上記の関数では、何も返していません。3行目を次のように更新する必要がありますreturn $q->result_array();

于 2012-08-20T19:55:22.423 に答える