0

我有一个表 tbparent_module,tbsub_module 和一个名为 tbmodule_pairing 的联结表,其中包含 2 个表 (tbparent_module,tbsub_module) 的 ID

在我的控制器上,我调用了一个模型,它将查询所有父模块并将其显示在视图上。我已经这样做了,但我的问题是,我还需要显示它的子模块。

输出示例

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

转到此 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 回答
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 回答