【发布时间】:2010-12-05 12:37:04
【问题描述】:
是否可以(如何)使用 kohana ORM 使用 mysql 事务和回滚?
【问题讨论】:
是否可以(如何)使用 kohana ORM 使用 mysql 事务和回滚?
【问题讨论】:
Kohana 3.x 中的 SQL 事务处理方式与 2.x 不同。 3.x中,数据库类自带事务方法:
$db->begin();
$db->commit();
$db->rollback();
如果您使用的是 ORM 东西,这也适用。只需在 ORM 保存、更新、a 或删除之前启动事务。
阅读这篇文章的更多内容: http://dev.strategystar.net/2011/10/sql-transactions-with-kohana-3-x/
在 2.x 中,交易必须手动完成:
$this->db->query("START TRANSACTION")
【讨论】:
查看official forums。它展示了如何使用 Ko3 交易的示例:
$db->query(NULL, 'TRANSACTION START');
// Do stuff
$db->query(NULL, 'COMMIT');
如何使用版本 2,我不知道。我自己对 kohana 还是新手,学习 Ko3 而不是 2。但我猜它很相似。
【讨论】:
我创建了一个 Kohana 模块,它使使用事务变得更加容易:
https://github.com/brazzy/kohana-transactional
不过,它至少需要 Kohana 3.1。但是你只需添加
public $_transactional = true;
到控制器,所有动作都在事务内部自动执行,当动作失败并出现异常时回滚。
【讨论】: