小编Tom*_*Tom的帖子

如何在不同的有界上下文中将学说实体拆分为更多的域实体?

我正在尝试DDD(域驱动设计)领域的第一步.我喜欢明智的规则,你应该将你的实体分成许多较小的,特定于上下文的实体(例如,User实体往往在每个非ddd或设计不佳的应用程序中都会过度生长).但是在使用Doctrine的php中如何(有效地)实现它的常见选项是什么?

假设我有两个有界的上下文:StoreInvoicing

它们中的每一个都有两个域实体:对于Store BC而言FirstTimeCustomer,RecurrentCustomer 对于Invoicing BC它是VatCustomerNonVatCustomer

现在,在我的基础设施层中,我希望它们全部保存在同一个(至少是基础)表中,以便能够通用UserId(Uuid)引用它们.对我来说问题是,如何做到这一点,所以我可以利用我的存储库实现中的doctrine自动化.

我读到了可能是解决方案的单表继承或类表继承,但是:

我需要能够使用User相同的Uuid,因为它在每个上下文中都是不同的类型.

我需要能够在商店BC中返回一些AbstractStoreCustomeraka FirstTimeCustomerRecurrentCustomeron $storeCustomerRepository->find(1);.

并在发票BC中返回一些AbstractInvoicingCustomeraka VatCustomerNonVatCustomeron $invoicingCustomerRepository->find(1);.

但似乎我被迫在这里选择BC我想要的实体的特定身份.所以在DDD的背景下对我来说根本没有意义.

我还阅读了Mapped Superclasses,它看起来也像是选项,但是:

这意味着根本不可能在映射的超类上进行一对多关联.

而且我需要Customer与订单有关系,这两个实体应该是可用的(也可能不希望它可用于User新BC中的一些新类型的实体).

我得出结论,我应该怀疑我错过了什么,是吗?我应该如何将上帝实体打造成更小的特定背景?

php domain-driven-design doctrine-orm

5
推荐指数
1
解决办法
830
查看次数

标签 统计

doctrine-orm ×1

domain-driven-design ×1

php ×1