0

テーブル tbparent_module,tbsub_module と、2 つのテーブル (tbparent_module,tbsub_module) の ID を含む tbmodule_pairing というジャンクション テーブルがあります。

私のコントローラーでは、すべての親モジュールを照会してビューに表示するモデルを呼び出しました。私はすでにこれを行っていますが、私の問題は、そのサブモジュールも表示する必要があることです。

出力例

Parent Module 1
     Sub Mod 1
     Sub Mod 2
     Sub Mod 3

Parent Module 2
     Sub Mod 1
     Sub Mod 2
     Sub Mod 3

Parent Module 3
     Sub Mod 1
     Sub Mod 2
     Sub Mod 3

これは今の私のコードです

見る

foreach($module as $result){
      $sql = mysql_query("SELECT * FROM `tbsub_module` where parent_id='$result->id'");
      while($row=mysql_fetch_array($sql)){
         echo $row['subcateg_name'];
      }
}

私はこれが間違っていることを知っています。しかし、これが私の問題を解決する唯一の方法です。MVCのルールを守りたいし、CodeIgniterのライブラリも使いたい

4

2 に答える 2

0

コントローラーからビューにデータを渡すだけです。あなたは本質的にMVCの全体的な考え方を壊しています。クエリはモデル内にある必要があり、コントローラーによって呼び出されてからビューに渡されます。私はクエリに対処しません (疲れています...) が、これは基本的にあなたが望むものです.

コントローラ:

function whateverTheViewIs()
{
    $this->load->model('categories');
    $data['subCatName'] = $this->categories->getSubcats();
    $this->load->view('viewName',$data);
}

モデルのカテゴリ:

function getSubCats()
{
   run your query here, return array of whatever data you need.
}

ビュー名:

foreach($subCat as $subcateg)
{
    echo $subcateg['subcateg_name'];
}

モジュールも必要な場合は、コントローラーの別の $data['whatever'] 配列にロードして、同じ方法で渡すことができます。

于 2012-10-20T12:40:39.273 に答える
0

この CI ドキュメントにアクセスしてください http://codeigniter.com/user_guide/database/index.html CI で使用できるすべての DB メソッドがあります。

これはおそらく、クエリを実行するための機能する(テストされていない)方法です..

$query = $this->db->get('modules');  ## SELECTIN all records from modules table
foreach ($query->result() as $row)
{
    $query2 = $this->db->get_where('tbsub_module', array('parent_id' => $row->id));
        foreach ($query2->result() as $row2)
        {
            echo $row2->subcateg_name;
        }
}
于 2012-10-20T06:54:33.750 に答える