becklyn/ddd-doctrine-bridge

Doctrine 实现的事件存储和事务管理器,用于与 becklyn/ddd-core 一起使用

3.0.2 2024-03-04 09:28 UTC

README

becklyn/ddd-doctrine-bridge 为 becklyn/ddd-core 中发现的事件存储和事务管理器接口提供 Doctrine ORM 实现。该库不依赖于 Doctrine 以外的任何技术平台,但我们还提供了 becklyn/ddd-symfony-bridge 库,用于在 Symfony 应用程序中使用。

如何使用

有关如何使用库提供的组件的说明,请参阅 becklyn/ddd-core 文档。

设置事件存储

不使用 becklyn/ddd-symfony-bridge 库,您将需要自己将事件存储与应用程序集成。除了事件存储实现外,此库还提供 XML 和注解格式的 Doctrine ORM 映射,以及 Doctrine Migrations 3 迁移来设置数据库表。

事件时间戳中的微秒

为了使 Doctrine ORM 2 将微秒持久化到数据库中,作为表示事件何时被引发的时间戳的一部分,您需要将 DateTimeImmutableMicrosecondsType 类注册到 Doctrine DBAL 中,作为 datetime_immutable 类的覆盖。理想情况下,应在引导过程中完成此操作,例如:

use Doctrine\DBAL\Types\Type;
Type::overrideType('datetime_immutable', 'Becklyn\Ddd\DateTime\Infrastructure\Doctrine\DateTimeImmutableMicrosecondsType'); 

目前仅支持 MySQL 和 Oracle。对于 MySQL,在 Doctrine ORM 3 中,这可能不再需要,因为它应该会原生地包含此功能。对于 Oracle,还需要激活 \Becklyn\Ddd\DateTime\Infrastructure\Doctrine\MicrosecondsOracleSessionInit Doctrine 监听器。