tp5 批量更改数据库中的某个字段的部分数据(如上级关系树)

如标题所示,这边用修改上级,然后更改所有与我有关系的下级关系树

  数据结构 		pids   string类型,例如:'22,12,10,9,3,1'

如:
用户A的id为25,上级为22,上级树pids为’22,12,10,9,3,1’
用户B的id为26,上级为25(A的下级),上级树为’25,22,12,10,9,3,1’
用户C的id为27,上级为26(B的下级),上级树为’26,25,22,12,10,9,3,1’
需求:
将A的上级id,从22更改为23,已知id为23的关系树为’19,16,11,5’,则A的关系树变为’23,19,16,11,5’
要求更改A的所有下级的关系树
如:B的关系树更改为’25,23,19,16,11,5’
C的关系树更改为’26,25,23,19,16,11,5’

主要方法

  1. Db::raw(“FIND_IN_SET($id,pids)”)
    发现pids中有用户id的数据,(不更新的话可以用这个方法,查询出所有的下级)
  2. ->exp
			//变量解释:$id:用户A的id,$ord_pids :用户A旧的关系树,$news_pids 用户A新的关系树
            $where = [];
            //
            $where[] = ['exp',Db::raw("FIND_IN_SET($id,pids)")];
            $old_pids = $ord_pids ? $id.','.$ord_pids: $id;//旧数据
            $news_pids = $pids ? $id.','.$pids : $id;//新数据
            //更新与我相关的所有关系链
 				Db::name('user')
                ->where($where)
                //exp用新数据替换旧数据
                ->exp('pids', "replace(pids,'" . $old_pids . "','" . $news_pids . "')")
                ->update();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值