trf4php/trf4php-doctrine

这是trf4php的Doctrine绑定。

2.0.0 2018-03-19 21:51 UTC

This package is not auto-updated.

Last update: 2024-09-14 14:03:41 UTC


README

Latest Stable Version

master: 构建状态 覆盖率状态 1.2: 构建状态 覆盖率状态

这是trf4php的Doctrine绑定

使用trf4php-doctrine

配置

<?php
/* @var $em \Doctrine\ORM\EntityManager */
$tm = new DoctrineTransactionManager($em);

使用事务

<?php
/* @var $tm TransactionManager */
try {
    $tm->beginTransaction();
    // database modifications
    $tm->commit();
} catch (TransactionException $e) {
    $tm->rollback();
}

事务性EntityManager

如果事务失败,您必须关闭EntityManager。Doctrine表示,在关闭EM之后,如果您想使用数据库,必须创建另一个EM。《TransactionalEntityManagerReloader》会自动完成。

要启用此功能,您需要执行以下步骤

  • 在《DoctrineTransactionManager》中使用《EntityManagerProxy》
  • 将《TransactionalEntityManagerReloader》观察者附加到《DoctrineTransactionManager》
$tm = new DoctrineTransactionManager(new DefaultEntityManagerProxy());
$emFactory = new DefaultEntityManagerFactory($conn, $config);
$tm->attach(new TransactionalEntityManagerReloader($emFactory));

如果您想使用共享的、非事务性EntityManager,请将其传递给《DefaultEntityManagerProxy》的构造函数。在这种情况下,您可以在不启动事务的情况下使用代理对象,虽然不推荐这样做,但有时是必要的。

此功能在集成测试中也很有用。您可以在《tearDown()`》中回滚,因此您不需要重新初始化数据库。这将极大地加快您的测试速度。

历史

1.2

事务性EntityManager

在开始事务后立即创建EntityManager。