Use better code for transactions

[MAILPOET-2439]
This commit is contained in:
Pavel Dohnal
2019-10-30 12:40:34 +01:00
committed by Jack Kitterhing
parent 0e6ee238e9
commit 7a0eb82aad

View File

@@ -2,6 +2,7 @@
namespace MailPoet\Doctrine;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\ORM\EntityManager;
use MailPoetVendor\Doctrine\ORM\EntityRepository as DoctrineEntityRepository;
use MailPoetVendor\Doctrine\ORM\Mapping\ClassMetadata;
@@ -66,19 +67,14 @@ abstract class Repository {
function truncate() {
$cmd = $this->entity_manager->getClassMetadata($this->getEntityClassName());
$connection = $this->entity_manager->getConnection();
$connection->beginTransaction();
try {
$connection->query('SET FOREIGN_KEY_CHECKS=0');
$table_name = $cmd->getTableName();
$connection = $this->entity_manager->getConnection();
$connection->transactional(function(Connection $connection) use ($table_name) {
$connection->query('SET FOREIGN_KEY_CHECKS=0');
$q = "TRUNCATE $table_name";
$connection->executeUpdate($q);
$connection->query('SET FOREIGN_KEY_CHECKS=1');
$connection->commit();
}
catch (\Exception $e) {
$connection->rollback();
}
});
}
/**