我有一个名为menu的表:
用户 | ID | 父级 | 标题 | 链接
parent - 包含父菜单的 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["标题"]
$menu["链接"]
$menu['子']['标题'](等)
带有编码器活动记录?
尝试这种方式可能会有所帮助:
$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
字段进行比较,因此如果错误,请对其进行改进。
我只是将您的 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();