向博客添加类别和子类别

时间:2018-06-25 08:39:58

标签: php mysql foreach

好的,我做了很多研究,研究了很多stackoverflow问题,但没有一个回答我的问题。

我正在构建一个简单的博客,目前正在尝试构建一个简单的类别/子类别系统,但是在使子类别加载到其父项下遇到了障碍。如果您知道我在下面做的一种更简单的方法,请告诉我。

这是我的数据库的结构:

id || name || parent_id || status
------------------------------------------
1  || category1 || NULL || 1
2  || subcategory1 || 1 || 1

然后我有我的模型代码:

public function getCategories()
{
    $results = $this->db->select('msi_items_categories','status = 1 AND parent_id = NULL');
    if( !is_array($results[0]) ) {
        $new_results = array();
        array_push($new_results, $results);
        return $new_results;
    } else {
        return $results;
    }
}

public function getSubCategories($parent)
{
    $bind = [':parent' => $parent];
    $results = $this->db->select('msi_items_categories','status = 1 AND parent_id = :parent');
    if( !is_array($results[0]) ) {
        $new_results = array();
        array_push($new_results, $results);
        return $new_results;
    } else {
        return $results;
    }
}

这是我的控制器代码:

public function error()
{
    $getSettings = $this->setting->getAll();
    $getCategories = $this->setting->getCategories();
    $getSubCategories = $this->setting->getSubCategories();
    if(is_array($getCategories[0]) ) {
        $isCategory = true;
    } else {
        $isCategory = false;
    }
    if(is_array($getSubCategories[0]) ) {
        $isSubCategory = true;
    } else {
        $isSubCategory = false;
    }
    $data = [
        'settings' => $getSettings,
        'mainCategory' => $getCategories,
        'subCategory' => $getSubCategories,
        'isCategory' => $isCategory
        'isSubCategory' => $isSubCategory
    ];
    $this->view('index', $data);
}

然后我有我的模板代码,这是即时消息尝试执行foreach和顶级类别的地方,但我只是不知道如何处理子类别。在我开始使用MVC模型之前,我只是将类放入主类foreach中,然后放入id,但现在它们都已在控制器中完成,所以我无法弄清楚如何使用MVC模型处理子类。

    <?php foreach($data['mainCategory'] as $category) : ?>
    <li class="dropdown">
        <a class="dropdown-toggle nav-link dropdown-toggle pl-0" data-toggle="dropdown" aria-expanded="false" href="#"><?php echo $category['name']; ?></a>
        <div class="dropdown-menu" role="menu">
            <a class="dropdown-item" role="presentation" href="#"><i class="text-black-50 fas fa-box"></i>&nbsp; All <?php echo $category['name']; ?></a>
            <div class="dropdown-divider" role="presentation"></div>
            <?php foreach($data['subCategory'] as $scategory) : ?>
                <a class="dropdown-item" role="presentation" href="#"><i class="text-black-50 <?php echo $scategory['icon']; ?>"></i>&nbsp; <?php echo $scategory['name']; ?></a>
            <?php endforeach; ?>
        </div>
    </li>
    <?php endforeach; ?>

非常感谢!

1 个答案:

答案 0 :(得分:0)

only