我有3种主要类型:公司、服务和专业。每家公司都有一份服务清单。每个服务都有一个专业列表。每个专业都有一个专业(子专业)列表。
Company 1
- Service 1
-- Specialty 1
--- Sub-specialty 1
所以我在Prisma 1.34上做这个数据模型:
type Company {
id: ID! @id
name: String! @unique
services: [Service]
}
type Service {
id: ID! @id
name: String! @unique
companies: [Company]! @relation(link: TABLE)
specialties: [Specialty]
}
type Specialty {
id: ID! @id
name: String! @unique
companies: [Company]! @relation(link: TABLE)
services: [Service] @relation(link: TABLE)
sub_specialties: [Specialty] @relation(link: TABLE)
}
我的问题是,当我添加一家公司并在另一家公司中为该公司使用相同的服务时,所有其他专业和子专业记录都会随该服务一起出现。我想让每个公司的专业和子专业领域是唯一的,但他们也应该在每个公司下的相关服务。
我在过去的3天里一直在做这件事,我将非常感谢任何人的帮助。
发布于 2020-06-15 19:31:01
这是我想出的解决方案:我在ServiceItem
和SpecialtyItem
表中保存唯一的服务和专业名称。每当我向公司添加新的Service
时,我都会将该Service
链接到一个唯一的特定ServiceItem
。Service
和Specialty
从链接的ServiceItem
和SpecialtyItem
接收它的信息(此项目中只有name
属性)。这样,每当我更新我的ServiceItem
或SpecialtyItem
时,每个公司下的所有相关Service
和Specialty
字段都会更新。下面是数据模型:
type Company {
id: ID! @id
name: String! @unique
services: [Service]! @relation(onDelete: CASCADE)
}
type ServiceItem {
id: ID! @id
name: String! @unique
}
type Service {
id: ID! @id
info: ServiceItem! @relation(link: INLINE)
company: Company! @relation(link: INLINE)
specialties: [Specialty] @relation(onDelete: CASCADE)
}
type SpecialtyItem {
id: ID! @id
name: String! @unique
}
type Specialty {
id: ID! @id
info: SpecialtyItem! @relation(link: INLINE)
service: Service @relation(link: INLINE)
sub_specialties: [Specialty] @relation(onDelete: CASCADE)
}
发布于 2020-06-10 17:58:24
如果您提交给嵌套关系,则必须使Service
类型具有不唯一的名称。这将强制为每个公司创建一个新的Service
模型,同时仍然允许Specialty
更通用,并具有更好的重用性。
这里的逻辑是,如果有多个具有相同名称但具有不同Specialty
属性的Services
,则它们是不同的。
https://stackoverflow.com/questions/62250494
复制