Codeigniter查询的类别和项目

时间:2013-11-16 17:53:33

标签: php codeigniter activerecord

我正在试图找出如何执行此Codeigniter ActiveRecord查询,以便我的返回结果将是我想要的。

我有一个menu_categories表和一个menu_categories_items表。结构如下。

menu_categories
    -category_id (pk autoinc)
    -category_name
    -category_class

menu_categories_items
    -item_id (pk autoinc)
    -item_name
    -category_id (fk)

到目前为止,我已经能够从显示为此的数据库中检索正确的结果对象。

array(3) {
    [0]=> object(stdClass)#24 (3) {
        ["category_id"]=> string(1) "1"
        ["category_name"]=> string(9) "Dashboard"
        ["category_class"]=> string(9) "dashboard"
    }
    [1]=> object(stdClass)#24 (3) {
        ["category_id"]=> string(1) "2"
        ["category_name"]=> string(5) "Users"
        ["category_class"]=> string(5) "users"
    }
    [2]=> object(stdClass)#24 (3) {
        ["category_id"]=> string(1) "3"
        ["category_name"]=> string(5) "Pages"
        ["category_class"]=> string(5) "pages"
        /* HOW I WANT IT TO LOOK IN THE OBJECT */
        ["links"]=> array(2) {
            [0]=> object(stdClass)#24 (2) {
                ["item_id"]=> string(1) "1"
                ["item_name"]=> string(5) "Admin Pages"
            [1]=> object(stdClass)#24 (2) {
                ["item_id"]=> string(1) "2"
                ["item_name"]=> string(5) "User Pages"
            }
        }
    }
}

让我们说Pages类别包含构成该类别的其他项目。我试图找出如何完成查询的其余部分。我考虑过进行连接并选择属于这些类别的字段。或者我应该做某种子查询或建议的路径是什么。

编辑:

出于某种原因,我得到了死亡的白屏。

$x = 0;
    if($this->general_functions->null_check($dashboard_menu_categories) == TRUE){$x++;}

    if ($x == 0)
    {
        foreach($dashboard_menu_categories as $category){
            $items = $this->db->get_where('dashboard_menu_categories_items', array('category_id' => $category->category_id));
            if($items->num_rows > 0)
            {
                $dashboard_menu_categories['links'] = $items->result();
            }
        }
        return $dashboard_menu_categories;
    }
    echo $this->db->last_query();
    echo '<pre>';
    var_dump($dashboard_menu_categories); 
    echo '</pre>';

1 个答案:

答案 0 :(得分:2)

$data=yourFunctionToGetCategory_menu

foreach($data as $m){
$l=$this->db->get_where('menu_categories_items',array('category_id'=>$m->category_id));
if($l->num_rows>0){
$data[]=$l->result();
}
}return $data;