我有一个名为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活动记录?
答案 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);
可能是这样的,但你需要改进它。您似乎要在第二个查询中将id
与parent
字段进行比较,如果错误,请进行改进。
答案 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();