事务处理
MiniFramework 在 2.9.7 版本中提供了在 Model 内执行事务处理的能力,相关方法的底层支持来自于 Mini\Db\Db 类。示例代码如下:
namespace App\Model;
use Mini\Base\Model;
class User extends Model
{
public function getUser()
{
// 使用 KEY 为 db1 的数据库实例
$this->useDb('db1');
// 开启事务
$this->beginTransaction();
try {
// 添加数据命令1
$this->table('user')->data(['name'=>'张三','age'=>18])->add();
// 添加数据命令2(故意写错 agee 字段名)
$this->table('user')->data(['name'=>'李四','agee'=>19])->add();
// 提交事务
$this->commit();
} catch (\Exception $e) {
// 事务回滚
$this->rollBack();
}
// do something...
}
}
上述代码中,第二次添加数据的命令中,故意将字段 age 写错为 agee,这将导致第二次添加数据的命令运行时出现异常。当程序捕获到异常时,会执行 $this->rollBack()
方法将事务进行回滚。