trf4php / trf4php-doctrine
这是trf4php的Doctrine绑定。
2.0.0
2018-03-19 21:51 UTC
Requires
- php: >=7.1
- doctrine/orm: ~2.4
- trf4php/trf4php: ~2.0
Requires (Dev)
- ext-pdo_sqlite: *
- php-coveralls/php-coveralls: 2.0.0
- phpunit/phpunit: 7.0.2
README
这是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。