博客列表 >tp5.1 无限极分类之删除子类

tp5.1 无限极分类之删除子类

意外的博客
意外的博客原创
2019年07月16日 17:33:422097浏览

删除无限极分类中的父类,子类也一并删除;

在控制器中操作;

首先创建一个前置操作;也就是在删除操作之间先执行其他的操作(这里是先删除子类操作);

//前置操作;
    /*
    doson为需要执行的方法,
    'only'=>'doDel'为只要执行doDel方法,
    连在一起就是:在执行doDel方法之前,就先执行doson方法;
    */
	protected $beforeActionList = [
        'doson'  =>  ['only'=>'doDel']
    ];
    //单个删除操作;
	public function doDel(){
		$id = Request::param('id');
		$res = CateModel::destroy($id);
		if($res){
			$this->success('删除成功','cate/index');
		}else{
			$this->error('删除失败');
		}
	}

	//下级分类删除;
	public function doson(){
		//获取当前id;
		$cateid = Request::param('id');
		//如果发现单个不能删除,那么将res进行判断有子类是才进行删除;
		$res = CateModel::delnext($cateid);
		// dump($res);die;	//传递过来的是数组;主键d;
		//将当前删除的id放入到子id集合中;
		$res[] = $cateid;
		// dump($res);die;
		//删除栏目;
		$result = CateModel::destroy($res);
	}

在model中查找下一级;

	/**
	&$result 	//静态数组集合;
	$id 		//当前删除的id;
	*/
	//递归实现子类查询;
	public static function delnext($cateid,&$result=[]){
		//查询所有数据;
		//这里也可以直接用条件查询到pid,就不用下面的if判断了;
		//$data = CateModel::where(['pid'=>$cateid])->select()
		$data = CateModel::select();
		//将这些数据进行循环;
		foreach($data as $k => $v){
			//判断这些数据中pid等于当前id的;
			if($v['pid'] == $cateid){
				//有,将这些数据的id放入到数组中;
				$result[] = $v['id'];
				//然后在根据这些数据的id进行调用自己;
				self::delnext($v['id'],$result);
			}	
		}
		return $result;
	}


上一条:0715作业下一条:JS懒加载
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议