Я хочу выполнить определенный набор операций над несколькими моделями / таблицами, используя Doctrine с Symfony.Вот что я делаю:
public function myFunc()
{
$conn = Doctrine_Manager::connection();
try {
$conn->beginTransaction();
$prop_trans->save($conn);
self::doSomething1($conn);
$bill_appor->save($conn);
// Final Committ
$conn->commit();
return $prop_trans;
} catch (Exception $exc) {
if ($conn)
$conn->rollback();
throw $exc;
}
}
public function doSomething($conn)
{
$obj = new Trans();
// this function might create & save another child record
$obj->doSomething2($conn);
$obj->save($conn);
}
Однако, когда возникает исключение (уровень кода или дБ), мне интересно, работает ли откат, поскольку я вижу, что некоторые записи сохраняются.
Насколько я понимаю, пока я открыл соединение, начал транзакцию, все методы, использующие соединение $ conn, выполняются в одной транзакции.Если что-то не получается, все откаты.
Я также пытался использовать точки сохранения, но я не смог с ними работать.Может ли кто-нибудь сказать мне, достаточно ли передать соединение, чтобы все запустило транзакцию?Это потому, что атрибут MySQL auto_committ установлен или что-то?Спасибо