选择菜单和内部菜单活动记录

时间:2015-01-09 12:59:01

标签: php mysql codeigniter activerecord menu

我有一个名为menu的表:

用户| id |父母|标题|链路

父级 - 包含父级菜单的ID(如果0表示没有父级,其他则表示子级菜单)

id - 自动递增整数

标题,链接 - 用于显示菜单

我想用SELECT活动记录(codeignaotr)获取这些数据,我不知道如何做到这一点。

simaply我会使用这样的东西(没有检查这个代码,仅作为例子!): - 不在活动记录中

    $result=$mysqli->query("SELECT `id`,`parent`,`text`, `link` FROM `menu` where `user`=$user);
    while($row=mysqli_fetch_assoc($result)){
        $id=$row['id'];
        $text=$row['text'];                             
        $link=$row['link'];
        $subs=0;

        if($result2=$mysqli->query("SELECT `id`,`text`, `link` FROM `menu` WHERE `parent`=$id")){
            while($row2=mysqli_fetch_assoc($result2)){  
                $id_sub[]=$row['id'];
                $text_sub[]=$row['text'];                               
                $link_sub[]=$row['link'];
            ++$subs;
            }//query
        }//if   

    }//query 

以这种格式获取所有菜单数组的最佳方法是什么:

$菜单['标题']

$菜单['连结']

$ menu [' sub'] [' title'](等等..)

带有codeigantor活动记录?

2 个答案:

答案 0 :(得分:1)

尝试这种方式可能有所帮助:

$this->db->select('id,parent,text,link');
$this->db->from('menu');
$this->db->where('user',$user);
$query = $this->db->get();
$addrows = $query->result();
foreach($allrows as $onerow){
    $this->db->select('id,text,link');
    $this->db->from('menu');
    $this->db->where('parent',$onerow->id);
    $query = $this->db->get();
    $subrows[] = $query->result();
}
print_r($subrows);

可能是这样的,但你需要改进它。您似乎要在第二个查询中将idparent字段进行比较,如果错误,请进行改进。

答案 1 :(得分:0)

我只是将您的mysql查询转换为活动记录....我希望这会对您有所帮助。 第一查询:

$result = $this->db->select('id, parent, text, link')->where('user', $user)->from('menu')->get()->result();

第二次质疑:

$result2 = $this->db->select('id, text, link')->where('parent', $id)->from('menu')->get()->result(); 
相关问题