Esempio n. 1
0
 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);
 }