我有一个表tbparent_module,tbsub_module和一个名为tbmodule_pairing的联结表,其中包含2个表的ID(tbparent_module,tbsub_module)
在我的控制器上,我调用了一个模型,该模型将查询所有父模块并将其显示在视图上。我已经这样做但我的问题是,我还要显示它的子模块。
输出示例
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的库
答案 0 :(得分: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;
}
}
答案 1 :(得分: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.
}
的viewName:
foreach($subCat as $subcateg)
{
echo $subcateg['subcateg_name'];
}
如果您也需要该模块,您可以将其加载到控制器中的另一个$ data ['无论什么样的数组]数组中并以相同的方式传递它。