首页 > 数据库技术 > 详细

MySQL 如何更改某一用户及伞下成员的path

时间:2019-08-25 00:37:15      阅读:157      评论:0      收藏:0      [点我收藏+]

MySQL  如何更改某一用户及伞下成员的path

在有的系统中,推荐关系的维护不只是pid那么简单,为了某些业务,可能还会需要维护path字段,path字段的存在,优点在于查询方便,最起码不用递归了,缺点呢就是不好维护,比如说要修改某一用户的上级,该用户底下还有很多的下级,比如一级下级,二级下级等等,所以如果真遇到这种情况,该怎么办呢,这里记录了一种方法(如有更好的,欢迎评论交流)

一、先更改当前用户的pid和path

1、因为更改上级,当前用户的pid和path肯定都会修改的,pid简单,值就是新的pid,path也简单,就是新上级的path再拼上新上级的id

1 $time = time();
2 $new_path = $puser[‘path‘] ? $puser[‘path‘].‘-‘.$puser[‘id‘] : $puser[‘id‘];//当前用户以及其下面用户的path
3 Db::name(‘member‘)->where(‘id‘,$user[‘id‘])->update([
4     ‘pid‘=>$puser[‘id‘],
5     ‘path‘=>$new_path,
6     ‘update_time‘=>$time,
7 ]);

二、再更改伞下成员的path

这里区分两种情况:

1、该用户已经绑定了推荐关系,即上级已经形成,取$new_path 再拼上之前的path中截取当前用户id之后的部分,此处以更改1236上级为1183为例

1 -- select * from zh_member where path like ‘%1236%‘
2 update zh_member set path = (CONCAT(1183-1236,SUBSTRING_INDEX(path , 1236 , -1))) where path like %1236%

2、该用户pid为0或空,这种简单点,直接取$new_path再拼上之前的path就行看了

1 $user_id = $user[‘id‘];
2 $sql = "UPDATE zh_member set path = CONCAT(‘".$new_path."‘,‘-‘,path),update_time = ".$time." where path like ‘".$user_id."%‘";
3 //echo $sql;die;
4 Db::query($sql);

 

MySQL 如何更改某一用户及伞下成员的path

原文:https://www.cnblogs.com/cyfblogs/p/11406670.html

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