Exceptions regarding existing active transactions were thrown while I was almost certain sufficient checks were in place.
However, I quickly found out that a strict boolean comparison to PDO::inTransaction() was failing.
Using var_dump I learned that this function was returning integers, not boolean values.
var_dump(PDO::inTransaction()); // int(1) || int(0)
(PHP 5 >= 5.3.3, Bundled pdo_pgsql)
PDO::inTransaction — Checks if inside a transaction
Checks if a transaction is currently active within the driver. This method only works for database drivers that support transactions.
Această funcție nu are parametri.
TRUE if a transaction is currently active, and
FALSE if not.