Zend 2 数据库事务?

7

我们如何在Zend 2中使用事务?我在API中没有找到任何信息,而且一些关于Zend 1的问题提到了常规的PDO函数,但是我在Zend 2中没有看到类似的内容。

2个回答

8

在ZF2方面,文档在此部分有些欠缺:

开始事务:

$this->adapter->getDriver()->getConnection()->beginTransaction();

提交事务:
$this->adapter->getDriver()->getConnection()->commit();

回滚事务:

$this->adapter->getDriver()->getConnection()->rollback();

但为什么 var_dump() 的结果是 NULL,而 begintTransaction()、commit() 或 rollback() 的结果也是 NULL 呢? - Attila Naghi
如果您正在使用MySQL,您的表格是否采用InnoDB格式?MyIsam不支持事务。 - Diemuzi
InnoDB,你可以在这里检查我的代码:http://stackoverflow.com/questions/27704648/how-do-you-make-to-work-the-database-transaction-in-my-code-in-zend-2/27706751#27706751 - Attila Naghi
如果你将commit()更改为rollback(),插入操作是否仍然会发生? - Diemuzi
看起来您的注入适配器实际上并没有被注入。如果您提出问题,我很乐意帮助您查看,如果您可以发布您的配置和代码示例。 - Diemuzi
显示剩余2条评论

7

试试这个:

$adapter = new Zend\Db\Adapter\Adapter(array(
    'driver' => 'pdo',
    'dsn' => 'mysql:dbname=db;hostname=localhost',
    'username' => 'root',
    'password' => 'password',
    'driver_options' => array(
        PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
    ),
));

$adapter->getDriver()->getConnection()->beginTransaction();

数据库将执行以下命令:

START TRANSACTION

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接