查询来自其他查询的参数

时间:2014-02-01 19:53:42

标签: php sql database menu

我现在才开始玩CI和MVC开发模型,所以我遇到了一些问题。

我有一个db表来动态生成网站上的菜单

表“菜单”如下所示:

id :int
display_name :varchar(50)
parent_id :int
链接:varchar(150)

我使用CI和Twitter bootstrap CSS框架从DB中创建菜单。

所以我的查询模型从表中获取所有对象。控制器将生成的数组传递给view,其中包含以下伪代码:

if (parent == 0){
 echo '<li><a href="$menu_item['link'].'">'.$menu_item['display_name'].'</a></li>';
}

这一切都适用于主菜单。

但是我想要实现的是:
如果带有id的记录,让我们说“2”,有子项(带有parent_id = 2的记录存在id表)生成下拉元素,应用css类 下拉列表 到li元素,然后在该li元素中显示查询结果WHERE parent_id = 2


我希望你明白我所追求的是什么。我显然不是一个老师向人们解释事情:)

<小时/> 这是我到目前为止所要达到的目标:
型号:

class MainMenu_model extends CI_Model {

    public function __construct()
    {
        $this->load->database();
    }


        public function get_menuitems($parent)
        {
            $query = $this->db->get_where('tbl_menus', array('parent_id' => $parent));
            return $query->result_array();
        }

        public function get_submenuitems($parent)
        {

            $query = $this->db->get_where('tbl_menus', array('parent_id' => $parent));
            return $query->result_array();
        }        
}


控制器:(我知道控制器不应该生成html,但这仅用于测试)

class MainMenu extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
        $this->load->model('MainMenu_model');
    }

    public function index()
    {
                $data['parent'] = $this->MainMenu_model->get_menuitems(0);
                foreach ($data['parent'] as $items){

                    echo $items['display_name'].'(';
                    $data['child'] = $this->MainMenu_model->get_menuitems($items['id']);
                    foreach ($data['child'] as $offspring){
                        echo $offspring['display_name'].',';
                    }
                    echo ');';
                }


                $this->load->view('templates/header');
                $this->load->view('mainmenu/index', $data);
                $this->load->view('templates/footer');
    }   
}
控制器回应层次结构应该如何 - 括号中的项目和子项(如果有的话)。当我在视图页面中执行 print_r($ parent)时,我得到主要项目,但 print_r($ child)什么都没带。

0 个答案:

没有答案