是否可以(如何)使用kohana ORM来使用mysql事务和回滚?
答案 0 :(得分:8)
Kohana 3.x中的SQL事务与2.x中的方式不同。在3.x中,数据库类带有事务方法:
$db->begin();
$db->commit();
$db->rollback();
如果您使用的是ORM,这也有效。只需在ORM保存,更新,删除或删除之前启动事务。
在这篇文章中阅读更多内容: http://dev.strategystar.net/2011/10/sql-transactions-with-kohana-3-x/
在2.x中,交易必须手动完成:
$this->db->query("START TRANSACTION")
答案 1 :(得分:7)
查看official forums。它显示了如何使用Ko3进行交易的示例:
$db->query(NULL, 'TRANSACTION START');
// Do stuff
$db->query(NULL, 'COMMIT');
如何使用版本2,我不知道。我自己还是kohana的新手,并且学习Ko3而不是2.但我猜它很相似。
答案 2 :(得分:3)
我创建了一个Kohana模块,可以更轻松地使用事务:
https://github.com/brazzy/kohana-transactional
但是,它至少需要Kohana 3.1。但是你只需添加public $_transactional = true;
到控制器,所有操作都在事务中自动执行,当事件因异常而失败时回滚。