【问题标题】:kohana transaction with ormkohana 与 orm 的交易
【发布时间】:2010-12-05 12:37:04
【问题描述】:

是否可以(如何)使用 kohana ORM 使用 mysql 事务和回滚?

【问题讨论】:

    标签: php orm kohana


    【解决方案1】:

    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")
    

    【讨论】:

    • DB::instance()->begin(), DB::instance()->commit(), DB::instance()->rollback()
    【解决方案2】:

    查看official forums。它展示了如何使用 Ko3 交易的示例:

    $db->query(NULL, 'TRANSACTION START');  
    // Do stuff  
    $db->query(NULL, 'COMMIT');
    

    如何使用版本 2,我不知道。我自己对 kohana 还是新手,学习 Ko3 而不是 2。但我猜它很相似。

    【讨论】:

    • 只是,我必须在 2.4 中使用它
    【解决方案3】:

    我创建了一个 Kohana 模块,它使使用事务变得更加容易:

    https://github.com/brazzy/kohana-transactional

    不过,它至少需要 Kohana 3.1。但是你只需添加

    public $_transactional = true;
    

    到控制器,所有动作都在事务内部自动执行,当动作失败并出现异常时回滚。

    【讨论】:

      猜你喜欢
      • 2012-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-11
      • 2011-10-23
      • 2012-11-10
      • 1970-01-01
      相关资源
      最近更新 更多