[TP6] 事务添加数据失败, 以及自动插入时间戳

120 阅读1分钟

1.添加数据失败原因: 没有开启事务

Db::startTrans();

2.一直抛出异常,且无法e>getMessage()无法捕获错误,原因:e->getMessage()无法捕获错误, 原因: 将this->success()写在了事务里面

3.如何自动插入时间, 模型中设置:

// 自动写入时间戳字段
protected $autoWriteTimestamp = true;

// 创建时间字段
protected $createTime = 'created_at';

// 更新时间字段
protected $updateTime = 'updated_at';

4.完整添加数据案例


use think\facade\Db;

try {
    // 开启事务
    Db::startTrans();

    // 添加日志
    $log = new \app\admin\model\TestModel;
    $log->uid = $this->auth->getAdmin()->id;
    $log->content = $content;
    $res = $log->save();
    if (! $res) {
        throw new \Exception("保存失败");
    }
    // 提交事务
    Db::commit();
} catch (\Exception $e) {

    // 回滚事务
     Db::rollback();
     $this->error("错误: ".$e->getMessage());
}

$this->success('上传成功'); //不要写在事务里面