1 是将我上面的表menu拆分成两个表进行关联查询吗? select menuid from think_menu where menuid in (select parentid from think_menu)? 还是建两个表think_menu,think_childmenu 代码如下 public function loadMenu(){ $menu=D('menu'); $lists=$menu->order('id Asc')->getField('id,menuid,menuname,parentid,URL'); foreach($lists as $key=>$value){ $lists[$key]['menuid']=$value['menuid']; $lists[$key]['menuname']=$value['menuname']; $lists[$key]['parentid']=$value['parentid']; $lists[$key]['op']=array( 'delete'=>U('delete',array('menuid'=>$value['menuid'])), 'deletechildmenu'=>U('deletechildmenu1',array('menuid'=>$value['menuid'])), ); $lists[$key]['URL']=$value['URL']; $ids[]=$value['menuid'];
`id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`menuid` varchar(5) NOT NULL,
`menuname` varchar(255) NOT NULL,
`parentid` smallint(5) DEFAULT NULL,
`childid` smallint(255) DEFAULT NULL,
`URL` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ;
Tree($praentid,$childid,$deep)
http://localhost/app/index.php/Message/Tree后面应该怎么写呢?
2、如果外层循环是父菜单,那么内层循环就是为了组装父菜单项的子菜单数据
如果是这样,那么你的代码效率太低了
tp 提供了关联查询,并返回巢状数组的功能,并不需要你太费脑筋
3、传递的参数很自然的是父节点的id,这样就可以顺利的获取该id下的一级子节点的数据了
select menuid from think_menu where menuid in (select parentid from think_menu)?
还是建两个表think_menu,think_childmenu 代码如下
public function loadMenu(){
$menu=D('menu');
$lists=$menu->order('id Asc')->getField('id,menuid,menuname,parentid,URL');
foreach($lists as $key=>$value){
$lists[$key]['menuid']=$value['menuid'];
$lists[$key]['menuname']=$value['menuname'];
$lists[$key]['parentid']=$value['parentid'];
$lists[$key]['op']=array(
'delete'=>U('delete',array('menuid'=>$value['menuid'])),
'deletechildmenu'=>U('deletechildmenu1',array('menuid'=>$value['menuid'])),
);
$lists[$key]['URL']=$value['URL'];
$ids[]=$value['menuid'];
}
$childmenu=D('childmenu');
$map['menuid']=array('in',$ids);
$childmenus=$childmenu->where($map)->order('menuid asc')->select();
dump($childmenus);
if(is_array($childmenus)){
foreach($childmenus as $key=>$value){
$value['childmenuname']=$value['childmenuname'];
$value['childmenuURL']=$value['childmenuURL'];
$value['op']=array(
'delete'=>U('deletechildmenu',array('childmenuid'=>$value['childmenuid'])),
);
$lists[$value['menuid']]['newchildmenu'][$value['childmenuid']]=$value;
//print_r($lists[$value['menuid']]['newchildmenu'][$value['childmenuid']]);
}
}
dump($lists);
$this->assign('list',$lists);
$this->display('Message/lyb_leftmenu');
}
$lists数据不对啊