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

在这里插入图片描述

作者:陈业贵 华为云 云享专家


二、理解步骤:

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

2.整块程序:

代码如下(示例):

```php
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');



    }
//由父类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;

 	}
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贵哥的编程之路(热爱分享)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值