在 DDD 中,你如何处理像 updatedAt 这样的实体字段?

in DDD how do you handle entity fields like updatedAt?

在 DDD 中,您如何处理 updatedAt 等实体字段? 当实体被修改时,谁负责更新这个字段? 是领域层责任吗?或基础设施层(更新时触发数据库)?或者在应用层中,在 $entity->persist() 之前调用 $entity->setupdatedat() ? 如果是域责任,我们是否必须在域中使用某种事件 listener/subscriber 模式?还有别的吗?

什么是 DDD 最佳实践?

谢谢

如果它是一个域问题(我们的业务策略关心时钟读数),那么域逻辑通常会将 clock/timestamp 作为其输入之一,然后我们可以存储时间的表示在数据模型中,以便下次我们加载聚合时可用。

如果是管道问题,我们会让管道处理。这可能意味着应用程序将元数据复制到数据模型中,或者它可能意味着我们的数据模型存储(即:数据库)自动执行此操作。

有时,您可以通过注意需求的来源来判断哪个是哪个?如果这是领域专家想要的东西,那么它更有可能成为领域关注点;如果需求来自某些 cross-cutting 问题(IT、安全),那么它更有可能是“只是”元数据。