公司的一个项目需要在一个函数里面的调用多个函数,但是每个函数都用到了mysql事物,按照原生的mysql事物,只有一层
也就是说 A函数包含了B函数,如果B函数事物成功,A再没有commit的时候也能提交事物,这样就不对了
直接上代码
写一个class
定义一个静态变量
//事物laravel
static private $transactions = 0;
public function begin() { ++self::$transactions; if (self::$transactions == 1) { $sql = 'BEGIN'; $conn = $this->getMasterConn(); return DBMysqli::execute($conn, $sql); } } /** * 提交事务 * * @return bool * @throws Exception */ public function commit() { if (self::$transactions == 1) { $sql = 'COMMIT'; $conn = $this->getMasterConn(); return DBMysqli::execute($conn, $sql); } --self::$transactions; } /** * 回滚事务 * * @return bool * @throws Exception */ public function rollback() { if (self::$transactions == 1) { self::$transactions = 0; $sql = 'ROLLBACK'; $conn = $this->getMasterConn(); return DBMysqli::execute($conn, $sql); } else { --self::$transactions; } }
参考网站 https://blog.csdn.net/hello_katty/article/details/45220825
声明:此文系舞林cuzn(www.wulinlw.org)原创稿件,转载请保留版权