Thinkphp 6.0数据库的事务和获取器

本节课我们要学习查询中的事务处理,和数据库获取器的使用方法。

一.事务处理

1. 数据库的表引擎需要是 InnoDB 才可以使用,如果不是调整即可;

2. 事务处理,需要执行多个 SQL 查询,数据是关联恒定的;

3. 如果成功一条查询,改变了数据,而后一条失败,则前面的数据回滚;

4. 比如:蜡笔小新给路飞 3 快钱,自己-3,对方+3,这时需要事务处理;

5. 系统提供了两种事务处理的方式,第一种是自动处理,出错自动回滚;

Db::transaction(function () {
    Db::name('user')->where('id', 19)->save(['price'=>Db::raw('price - 3')]);
    Db::name('user1')->where('id', 20)->save(['price'=>Db::raw('price + 3')]);
});

6. 手动处理,基本和原生处理类似,可以自行输出错误信息;

//启动事务
Db::startTrans();
try {
    Db::name('user')->where('id', 19)->save(['price'=>Db::raw('price - 3')]);
    Db::name('user1')->where('id', 20)->save(['price'=>Db::raw('price + 3')]);
    //提交事务
    Db::commit();
} catch (\Exception $e) {
    echo '执行 SQL 失败!';
    //回滚
    Db::rollback();
}

二.获取器

1. 获取器的意思就是:将数据的字段进行转换处理再进行操作;

2. 比如在获取数据列表的时候,将获取到的邮箱字段全部大写;

$user = Db::name('user')->withAttr('email', function ($value, $data) {
    return strtoupper($value);
})->select();
return json($user);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值