【发布时间】:2018-11-21 09:20:19
【问题描述】:
你好 stackoverflow 成员,
我正在使用纯 PHP 来实现域模型。我有两个实体,实体dog 和实体human 作为狗的主人。
这是一个多对多的关系。一个owner 可以有多个dog,而一个dog 由许多humans 拥有(假设这只狗属于一个家庭或一对夫妇)。
我有一个dog 和human 的数据库表,还有一个 n:n 连接表。我有两个实体,它们是 POPO。我还有两个存储库,一个用于dog,一个用于human。这些存储库具有 crud 操作并负责数据库查询。
哪个存储库负责管理 n:n 表?
示例:
实体dog 有一个属性数组,其中包含所有连接的human,反之亦然。如果我创建一个新的human 喜欢:$human = new Human('name'); 并让他拥有一个已经存在的dog 喜欢:$human->addDog($dog); 谁负责 n:n 连接?
我可以做$dogRepo->Update($human->getDogs()[0]); 来更新数据库中的狗,或者我可以做$humanRepo->Insert($human)。 DogRepo 是否也应该插入新的human(利用 HumanRepo)? HumanRepo 是否也应该更新dog(使用 DogRepo)。还是业务逻辑对此负责? (与业务逻辑分开调用insertHuman() 和updateDog())。
在所有这些方法中,我不知道哪个存储库负责 n:n 表?
听起来像是一个常见问题,但我在网上找不到合适的解决方案。
提前致谢!
【问题讨论】:
标签: php database domain-driven-design