先在common文件夹建立一个function.php文件,然后写一个递归函数,传递一个父id返回所有子id,如下:

function getChildrenId($node,$pid){
$arr=array();
foreach ($node as $v) {
if ($v['pid']==$pid) {
$arr[]=$v['id'];
$arr=array_merge($arr,getChildrenId($node,$v['id']));
}
}
return $arr;
}

然后是主程序这一块,我这里是是删除父id及所有子id:

public function deleteNode(){
$node=M('node')->select();
$pid=I('get.id');
$node=getChildrenId($node,$pid);
M('node')->where(array('id'=>$pid))->delete();
foreach ($node as $v) {
M('node')->where(array('id'=>$v))->delete();
}
$this->success('删除成功',U('Rbac/nodeList'));
}

传递一个父id返回所有子id的用法,可用于删除父级以下的所有子级的更多相关文章

  1. MySql 插入数据返回数据的Id值

    insert into addeditemgroup(addeditemgroupname) value(') ; select @@IDENTITY  as id; 返回最新的Id:

  2. 根据一个分类id 获取这个分类底下所有子分类的商品信息,根据下面方法查询出所有有关分类id 再 根据这些id去商品表里查询所有商品信息

    /** * 检测该分类下所有子分类,并输出ID(包括自己) * 数据库字段 catid pid */ function getChildrenIds ($sort_id){ include_once ...

  3. mysql插入数据后返回自增ID的方法,last_insert_id(),selectkey

    mysql插入数据后返回自增ID的方法 mysql和oracle插入的时候有一个很大的区别是,oracle支持序列做id,mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如何能获得 ...

  4. mysql函数之六:mysql插入数据后返回自增ID的方法,last_insert_id(),selectkey

    mysql插入数据后返回自增ID的方法 mysql和oracle插入的时候有一个很大的区别是,oracle支持序列做id,mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如何能获得 ...

  5. 进程的基本属性:进程ID、父进程ID、进程组ID、会话和控制终端

    摘要:本文主要介绍进程的基本属性,基本属性包含:进程ID.父进程ID.进程组ID.会话和控制终端. 进程基本属性 1.进程ID(PID) 函数定义:      #include <sys/typ ...

  6. 开启事务时mybatis返回主键id

    先说一下没有注解的 先给出实体类: public class City { private int city_id; private String city_name; public int getC ...

  7. mysql插入数据后返回自增ID的方法

    mysql和oracle插入的时候有一个很大的区别是,oracle支持序列做id,mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如何能获得到这个自增id的值呢? 方法一是使用la ...

  8. comboBox的id返回System.Data.DataRowView

    关系到ComboBox的DataSource,DisplayMember和ValueMember属性的设置顺序的问题. ComboBox的DataSource属性为object类型,但是需要实现ILi ...

  9. 关于mybatis插入数据库返回主键id

    关于Sequence主键的数据库来说,如: <insert id="add" parameterType="vo.Category"> <se ...

随机推荐

  1. poj 3204(最小割--关键割边)

    Ikki's Story I - Road Reconstruction Time Limit: 2000MS   Memory Limit: 131072K Total Submissions: 7 ...

  2. AC日记——Tree poj 3237

    Tree Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 9233   Accepted: 2431 Description ...

  3. BZOJ 4326 NOIP2015 运输计划(二分答案 + 树上差分思想)

    题目链接  BZOJ4326 这个程序在洛谷上TLE了……惨遭卡常 在NOIP赛场上估计只能拿到95分吧= = 把边权转化成点权 首先求出每一条路径的长度 考虑二分答案,$check(now)$ 对于 ...

  4. HDU 1045 Fire Net 状压暴力

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1045 Fire Net Time Limit: 2000/1000 MS (Java/Others)  ...

  5. URAL - 1860 Fiborial

    Discription Consider a sequence F i that satisfies the following conditions:  Find the number of dif ...

  6. 【MyEcplise】设置右键快捷菜单的方法

    在我们右键新建项目或文件时,有许多的选项我们几乎是不用的,那就没有必要放在右键的快捷菜单中:而有些选项是我们经常会用的,但是右键快捷菜单有没有,我们总是需要选择其它去到弹出的对话框中取选取.这些操作很 ...

  7. 【bootstrap】使用支持bootstrap的时间插件daterangepicker

    其中的架包和代码,具体可以去GitHub下查看: https://github.com/AngelSXD/myagenorderdiscount 1.引入js和css <link href=&q ...

  8. jmeter如何在写入jtl文件时同步写入数据库

    参考:1.http://blog.csdn.net/cakushin7433/article/details/53367508    2.http://blog.csdn.net/cakushin74 ...

  9. 在win7上安装visual c++ 2008 redistributable 发生错误error 1935

     方案一.原来服务"Windows Modules Installer"被禁用了, 启用该服务后, 问题就解决了.  方案二. 1.点开始——在运行框里输入regedit,按回车键 ...

  10. 《从0到1》读书笔记第一章&quot;未来的挑战&quot;第2记:做老子还是做孙子

    从1到N VS 从0到1 - 别让自己的小鸡鸡抓在别人的手上 近几年国内互联网创业上非常流行一种C2C(也就是Copy to China - 复制到中国)的创业模式,打的就是一个时间差和地域差.将在国 ...