Php 1查询依赖于另一个查询codeigniter

Php 1查询依赖于另一个查询codeigniter,php,codeigniter,many-to-many,Php,Codeigniter,Many To Many,我有一个表tbparent_模块、tbsub_模块和一个称为tbmodule_配对的连接表,其中包含两个表的ID(tbparent_模块、tbsub_模块) 在我的控制器上,我调用了一个模型,该模型将查询所有父模块,并将其显示在视图上。我已经这样做了,但我的问题是,我还需要显示它的子模块 输出示例 这是我现在的代码 查看 foreach($module as $result){ $sql = mysql_query("SELECT * FROM `tbsub_module` wher

我有一个表tbparent_模块、tbsub_模块和一个称为tbmodule_配对的连接表,其中包含两个表的ID(tbparent_模块、tbsub_模块)

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

输出示例

这是我现在的代码

查看

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的库

转到此CI文档 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;
        }
}

您只需要将数据从控制器传递到视图。你基本上打破了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['WHERATHER']数组中,并以相同的方式传递。

如果您想使用CI DB active record选择数据,请检查(查询的所有方法都有示例-选择、位置、顺序、限制等…)谢谢!实际上我知道如何使用CodeIgniter的活动记录和数据库库。但我的问题是,我无法理解我的问题的逻辑。我发布的代码来自我的查看页面,实际上我不想在那里查询。但我不知道如何检索查询依赖于其他结果的记录。正如您所看到的,它位于foreach循环的内部。那里的$result由控制器生成。感谢wayCI is MVC框架的回复。。所有查询必须在模型中,控制器从模型中获取数据并将其提供给视图文件。。请参阅在控制器上调用的Load View函数,在那里可以放置第二个参数。包含可能来自模型的数据。。
foreach($subCat as $subcateg)
{
    echo $subcateg['subcateg_name'];
}