首页 > 其他 > 详细

维护DOWNID

时间:2016-03-02 20:04:53      阅读:212      评论:0      收藏:0      [点我收藏+]
/**-----------------------------------------处理上级无限极所有下级ID--------------------------------*/

    public function removeDownId($table,$val,$idColName,$in){
        $config = self::$dbNew;
        //UPDATE tb1 SET f1=REPLACE(f1, ‘abc‘, ‘def‘);
        $sql = "UPDATE ".$config[DB_PREFIX].$table." SET downid = REPLACE(downid, ‘{$val},‘, ‘‘) WHERE {$idColName} in ( {$in} ) ";
        $in && self::$DB->execute($sql);
    }

    public function innerDownId($table,$val,$idColName,$in){
        $config = self::$dbNew;
        $sql = "UPDATE ".$config[DB_PREFIX].$table." SET downid = CONCAT(downid,‘{$val},‘)   WHERE {$idColName} in ( {$in} ) ";
        $in && self::$DB->execute($sql);
    }

    /**该方法一定要在修改本条数据之前使用;
     *@access  public
     * @param   integer   $table 那张表
     * @param   string    $currentUpid 修改后的这个表的所有上级ID
     * @param   string    $id 自己本身ID
     * @param   string    $idColName 主键名称
     * @param   return void
     **/
    public function downId($table,$currentUpid,$id,$idColName){
        //先找出本身的信息;
        $info = self::$DB->fetOne($table, $field = upid,$idColName . = .$id)[upid];
        $new = explode(,,$currentUpid);
        $old = explode(,,$info);
        //找出将要设置的upid 和老的upid的差集
        $positive = array_diff($new,$old);
        $negative = array_diff($old,$new);
        $diff = array_merge($positive,$negative);

        $taskInner = array();
        $taskRemove = array();
        if(!$diff){
            //如果没有交集 两种情况
            if(in_array($new[0],$old)){
                //没有发生变化
            }else{
                //则旧的需要删除 新的需要添加
                array_push($taskInner,$new);
                array_push($taskRemove,$old);
            }

        }else{
            //如果有交集 我们要循环判断 属于 new 还是 old new中的需要增加 old中的需要删除
            foreach($diff as $item){
                if(in_array($item , $new)){
                    //需要增加
                    array_push($taskInner,$item);
                }else{
                    //需要删除
                    array_push($taskRemove,$item);
                }
            }
        }
        $this->removeDownId($table,$id,$idColName,implode(,,$taskRemove));
        $this->innerDownId($table,$id,$idColName,implode(,,$taskInner));
    }

 

维护DOWNID

原文:http://www.cnblogs.com/bin-pureLife/p/5236190.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!