1

所以我有以下域:

  • 应用程序和版本,它们实际上是软件应用程序
  • 设备,安装应用程序的设备
  • 在设备上安装的应用程序
  • 按已安装应用程序订阅通知

到目前为止,我最终得到了以下模型:

  • Application实体,由名称、操作系统和类型定义
  • Version值对象,它基本上包装了版本信息(主要、次要等)
  • Release实体,它是一个组合对象,它引用了一个应用程序实体并嵌入了一个版本值对象
  • Device实体,由序列号标识
  • NotitificationSubscription实体(允许我按属性查询)

现在我想知道如何“关联”Device实体,Release因为NotificationSubscription它应该与 a 上的“已安装”关联ReleaseDevice包含一些额外信息(如身份验证令牌)。

鉴于我的 ORM (Doctrine2) 和 RDMS (MySQL) 的限制,我一直在寻找一个好的设计。

想象一下以下工作流程:

  1. Device从由其序列号标识的数据库中获取实体
  2. 我确定正在运行ReleaseDevice是否已经与它关联,如果没有,我创建一个关联
  3. 然后我需要NotificationSubscription为当前的设备发布关联添加或删除

我的问题是我最终有很多间接性。

为了允许我为关联设置额外的数据,我创建了一个关联类,它本身就是一个引用设备和发布的实体。

一个设备可能安装并运行了不同的 Release,例如,我不知道如何查询以下信息:“Fetches all the notification subscriptions for the current release for the current device”

我显然在存储库中添加了一个方法,findSubscriptionsByDeviceAndRelease($device, $release);这意味着我可以通过使用存储库和图表来查询此信息$device->getInstalledReleases()->filter($identifiedRelease)->getNotificationSubscriptions();

有任何想法吗?

4

1 回答 1

0

保持简单:你不需要一个领域模型,你只需要一个好的实体关系模型。您可能也不需要 Doctrine,因为 sql 查询应该足够简单。

于 2013-04-02T18:01:47.167 回答