php thinkphp 复用无限极分类,写入到数据库中

调取出相关的分类,复制一遍,写入到数据库中

从后台调取出指定的树状分类,结构不变,复制一遍,写入到数据库中

1、调取出的树状分类,id和pid有关联逻辑

2、function.php  方法

/*
 * === 复用相关N级分类 ===
 * $list 一维数组类型,id和pid需有逻辑关联
 * $root=0  意思是pid等于零代表一级结构
 * $cp_id  产品id,我需要更换一下产品id
 *
 * 开发时间:
 * 2020-08-18
 *
 * 开发者:
 * 遇事稳坐钓鱼台 https://www.cnblogs.com/zc290987034
 * */
function tree_bom_fl_fuyong($list,$root=0,$cp_id){
    if(!$cp_id)return 0;
    $packData = array();
    $sql = M('scm_bom_fl');

    foreach ($list as $k => $v) {
        $packData[$v['id']] = $v;//将所有的分类id作为数组key
        //先将所有数据写到数据库,pid统一默认的是零0
        $fl_1['paixu'] = $v['paixu'];
        $fl_1['chanpin_id'] = $cp_id;
        $fl_1['title'] = $v['title'];
        $fl_1_id = $sql->add($fl_1);
        $packData[$v['id']]['aid'] = $fl_1_id;//将每一个新增的id放到统一指定的字段中
    }
    //利用引用,将每个分类添加到父类child数组中,这样一次遍历即可形成树形结构。
    foreach ($packData as $key => $val) {
        if ($val['pid'] != $root) {//代表跟节点
            $shangji_aid = $packData[$val['pid']]['aid'];//找出他上级的aid
            $aid = $val['aid'];//当前要修改的aid
            $sql->where(array('id'=>$aid))->setField('pid',$shangji_aid);
        }
    }
    return 1;
}

3、效果

原文地址:https://www.cnblogs.com/zc290987034/p/13530889.html