public function testTransaction() { # -------------------------------------------------------------------------- DB::query("TRUNCATE users"); # -------------------------------------------------------------------------- # Transaction:success DB::beginTransaction(); DB::execute("INSERT INTO users (username,password) VALUES (:u1,:p1)", [':u1' => 'admin', ':p1' => 'admin']); DB::commit(); # -------------------------------------------------------------------------- # Transaction:error DB::beginTransaction(); DB::execute("INSERT INTO users (username,password) VALUES (:u1,:p1)", [':u1' => 'admin', ':p1' => 'admin']); DB::rollback(); # Check $this->assertEquals(DB::count(DB::query("SELECT * FROM users")), 1); # -------------------------------------------------------------------------- # Transaction in a closuure DB::transaction(function () { DB::query("DELETE FROM user WHERE id = 1"); throw new \Exception("Some goes wrong, must rollback"); }); # Check $this->assertEquals(DB::count(DB::query("SELECT * FROM users")), 1); }