Transakce proběhne, ale vyhodí There is no active transaction
- BuMoRi
- Člen | 109
Ahoj, poprvý zkouším transakce, takže tam určitě budu mít nějakou primitivní chybu, ale už nevím co vyzkoušet:
<?php
public function saveOrder($values, $sessionShop): void
{
$this->database->beginTransaction();
$customer = $this->checkCustomer($values);
if (!$customer) {
$idCustomer = $this->saveCustomer($values);
} else {
$idCustomer = $customer['id'];
}
$idOrder = $this->saveCart($values, $idCustomer, $sessionShop);
$this->saveItems($idOrder, $sessionShop);
$this->database->commit();
$this->database->rollBack();
}
?>
Vše proběhne jak má (teda jak já myslim že má). Až v okamžiku
„commitu“ se uloží zákazník, objednávka a jednotlivé položky
objednávky. Ale Tracy obarví poslední řádek a vyhodí There is no active
transaction.
Předem díky za jakoukoliv radu.
- David Matějka
- Moderator | 6445
mas tam commit a pod tim rollback, to nedava smysl, smaz ten radek s rollBack
- BuMoRi
- Člen | 109
Jasně, takže sem jen špatně pochopil dokumentaci: https://doc.nette.org/…atabase/core#…
Myslel sem že až rollBack vrátí autocommit režim a on to vlastně dělá
už ten commit.
Díky moc.