修改数据库字段操作

Mysql 发表时间:2020-11-06 15:46:58 作者:梁子亮 浏览次数:802

1、查找订单详情中订单id为238的订单,在规格表中对应到此规格库存stock减去订单详情中的num

$id = 238;
$array = [
    'gs.stock' => Db::raw('gs.stock - gd.num'),
];
$goodsspec = Db::name('goodsspec gs')->join('goodsorderdetail gd','gs.id = gd.spec_id')->where('gd.gd_id',$id)->strict(false)->update($array);

2、根据订单表的id减少user表的总数量,增加coupon表的使用数量,修改couponrecord表的is_used字段(注意所有表join必须是一条记录不能多条)

// 处理现金券的各个字段
$updateArr = [
    'cr.is_used'      =>  1,
    'co.use_num'     =>  Db::raw('co.use_num+1'),
    'u.coupon_num'     =>  Db::raw('u.coupon_num-1'),
];
Db::name('subscribe su')->join('couponrecord cr','su.coupon_id = cr.id')->join('coupon co','co.id = cr.coupon_id')->join('user u','u.id = su.user_id')->where('su.id',$id)->update($updateArr);

3、把数据表中某个字段加密为base64_encode,用于过滤emoji表情

$re2 = Db::name('goodsorder')->where('1=1')->exp('note','TO_BASE64(note)')->update();

4、把数据表中某个字段解码为base64_decode,用于过滤emoji表情

$re2 = Db::name('goodsorder')->where('1=1')->exp('note','FROM_BASE64(note)')->update();