前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >tp6删除某个分类,考虑种种情况

tp6删除某个分类,考虑种种情况

作者头像
贵哥的编程之路
发布2022-05-30 09:17:03
2720
发布2022-05-30 09:17:03
举报
文章被收录于专栏:用户7873631的专栏

第一种情况:这个要删除的分类其下有子分类,要删除先删除子分类先. 举个例子:顶级分类服装 其下有衣服 其下下还有耐克 如果要删除顶级分类服装咋整。 第一步:判断它是否为空。如果为空,代表什么都没做。不理会。 第一步:获取要删除的分类的id。 第三步:先找出无限极分类所有的分类,然后通过算法找到这个服装分类其下有没有子分类。有的话,返回服装所有的子分类回来。 第四步:转换成数组格式遍历下。遍历的作用就是删除服装其下的所有子类。 第五步:遍历删除完服装其下所有子类,在删除服装这个分类。

代码语言:javascript
复制
public function del($id=''){

        //如果分类id是空,则跳转到列表页面
        if ($id=='') {

            $this->redirect('category/index');

        }



        //根据id找到当前的记录
        $category = Db::name('Category')->find($id);


        //先找出所有分类,再根据id循环

        $categorys = Db::name('Category')->field('id,parent_id')->select();
        $category_model = new Categorys();

        $cateStr = $category_model->getChildrenIdStr($categorys,$id);
    
        $cate_list=explode(',',$cateStr);
        foreach ($cate_list as $k => $v) {

            Db::name('category')->where('id',$v)->delete();

        }

        Db::name('category')->where('id',$id)->delete();
        
        return redirect('index');



    }
代码语言:javascript
复制
//由父类id得到全部子类,返回字符串
 	public function getChildrenIdStr($cate_list,$parent_id=0){

 		static $str='';
 		foreach ($cate_list as $k => $v) {//遍历无限极分类

 			if ($v['parent_id']==$parent_id) {//如果这个分类是顶级分类的话,

 				$str =$str.','.$v['id'];//就把其下的子类一次一次的遍历赋值给$str

 				$this->getChildrenIdStr($cate_list,$v['id']);//无线极分类所有的分类,服装下的子类(衣服)。$v['id']的意思是记住一句话。顶级分类的id(服装)等于其下的子类(衣服)的pid。

 			}

 		}
 		
 		$str=ltrim($str,',');//去掉左边所有的空格,以逗号分隔
 		$str=rtrim($str,',');//去掉右边所有的空格,以逗号分隔
 		//print_r($str);
 		return $str;

 	}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档