使用CodeIgniter显示类别和子类别

lob*_*opd 2 codeigniter

我的数据库中有两个表,一个是Categories,另一个是Sub_Categories,我想像这样显示它们:

Categorie 1 
sub categoie 1 
sub categoie 2 
sub categoie 3 
sub categoie 4
Categorie 2 
sub categoie 1 
sub categoie 2 
sub categoie 3 
sub categoie 4
Run Code Online (Sandbox Code Playgroud)

但我不知道该怎么做.在我的数据库表中,我有以下字段:类别:ID,名称,图标.Sub_Categories:ID,Categ_id,Name

Cra*_*aig 7

这应该工作;

public function get_categories()
{
    $query = $this->db->get('Categories');
    $return = array();

    foreach ($query->result() as $category)
    {
        $return[$category->id] = $category;
        $return[$category->id]->subs = $this->get_sub_categories($category->id); // Get the categories sub categories
    }

    return $return;
}


public function get_sub_categories($category_id)
{
    $this->db->where('Category', $category_id);
    $query = $this->db->get('Sub_Categories');
    return $query->result();
}
Run Code Online (Sandbox Code Playgroud)

所有这些都是得到所有类别,但随后获得每个类别的所有子类别.调用get_categories()函数应该返回所需格式的对象.

我希望这有帮助.

编辑

您可以从控制器调用get_categories函数并将其传递给视图;

$data['categories'] = $this->your_model->get_categories();
$this->load->view('view_file', $data);
Run Code Online (Sandbox Code Playgroud)

然后在你的视图中你会像这样显示它们;

<ul>
<?php 
    foreach ($categories as $category)
        {
?>
    <li><?php echo $category->name; ?>
<?php
    if(!empty($category->subs)) { 
        echo '<ul>';
        foreach ($category->subs as $sub)  {
            echo '<li>' . $sub->name . '</li>';
        }
        echo '</ul>';
    }
?>
</li>
<?php
}
?>
</ul>
Run Code Online (Sandbox Code Playgroud)