【问题标题】:Kohana transactions on multiple tables多个表上的 Kohana 事务
【发布时间】:2012-01-13 09:11:30
【问题描述】:

我有一个基于 kohana 3.0.14 的网站,我想在某些模型中使用事务。 最好的方法是什么? 另外:如何在多个表上使用事务? (如何同时阻止多个表)? 现在我在做:

   DB::query(NULL, 'START TRANSACTION');            
        $contents = ORM::factory('basket_contents');
        $contents->product_type = $product_type;
        $contents->category = $product->category;
        $contents->basket = $this;
        $contents->save();
   DB::query(NULL, 'COMMIT');

但我想阻止 2 个表:篮子和内容。我不相信我这样做是对的。在 Kohana 3 中使用事务的最佳方法是什么?

【问题讨论】:

标签: php orm transactions kohana kohana-3


【解决方案1】:

Kohana 3 显然具有事务方法,尽管它们似乎没有记录在案。见this link

事务是数据库级别的,因此您在开始和提交之间所做的任何事情都是事务的一部分,无论涉及多少表。

您没有说明您使用的是什么数据库,但如果您使用的是 MySQL,请注意 MySQL MyISAM 表(最常见的类型)不支持事务——您需要将 InnoDB 与 MySql 一起使用。

【讨论】:

  • 好的,如果我的所有表都在 MyISAM 中,我该如何将它们“转换”为 InnoDB?非常感谢
【解决方案2】:

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

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

不过,它至少需要 Kohana 3.1,当然在 MySQL 上也需要表才能使用 InnoDB。

【讨论】:

    猜你喜欢
    • 2016-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多