Prisma一对一关系问题
Prisma One-to-one relation issue
我最近才开始使用 prisma,我 运行 遇到了关系问题。我有一个用户模型和一个地址模型。
model User {
id Int @id @unique @default(autoincrement())
username String
}
model Address {
id Int @id @unique @default(autoincrement())
street String
}
我需要给用户添加2个地址:发票地址和送货地址。在地址中我不需要用户参考。
我认为通过将此添加到用户模型可以毫无问题地工作:
invoiceAddress Address? @relation(name: "iAddress", fields: [iAddressId], references: [id])
deliveryAddress Address? @relation(name: "dAddress", fields: [dAddressId], references: [id])
iAddressId Int?
dAddressId Int?
但是在保存模式时,两个用户字段被添加到地址模型中......我不需要,现在我遇到了问题,因为它们引用相同的用户模型,所以我还必须命名它们并添加标量领域...
我是不是漏掉了什么???这应该是一个基本用例 imo。
这是Prisma端的要求,关系字段应该存在于模型的两侧,不能只在一个模型上定义关系字段。
以下模式模型应该可以为您解决问题:
model User {
id Int @id @unique @default(autoincrement())
username String
invoiceAddress Address? @relation(name: "iAddress", fields: [iAddressId], references: [id])
deliveryAddress Address? @relation(name: "dAddress", fields: [dAddressId], references: [id])
iAddressId Int?
dAddressId Int?
}
model Address {
id Int @id @unique @default(autoincrement())
street String
UserInvoice User[] @relation(name: "iAddress")
UserDelivery User[] @relation(name: "dAddress")
}
请注意,数据库中不存在关系字段,因此地址 table 中不存在 UserInvoice
和 UserDelivery
列。同样,invoiceAddress
和 deliveryAddress
列将不存在于用户 table.
上
我最近才开始使用 prisma,我 运行 遇到了关系问题。我有一个用户模型和一个地址模型。
model User {
id Int @id @unique @default(autoincrement())
username String
}
model Address {
id Int @id @unique @default(autoincrement())
street String
}
我需要给用户添加2个地址:发票地址和送货地址。在地址中我不需要用户参考。
我认为通过将此添加到用户模型可以毫无问题地工作:
invoiceAddress Address? @relation(name: "iAddress", fields: [iAddressId], references: [id])
deliveryAddress Address? @relation(name: "dAddress", fields: [dAddressId], references: [id])
iAddressId Int?
dAddressId Int?
但是在保存模式时,两个用户字段被添加到地址模型中......我不需要,现在我遇到了问题,因为它们引用相同的用户模型,所以我还必须命名它们并添加标量领域...
我是不是漏掉了什么???这应该是一个基本用例 imo。
这是Prisma端的要求,关系字段应该存在于模型的两侧,不能只在一个模型上定义关系字段。
以下模式模型应该可以为您解决问题:
model User {
id Int @id @unique @default(autoincrement())
username String
invoiceAddress Address? @relation(name: "iAddress", fields: [iAddressId], references: [id])
deliveryAddress Address? @relation(name: "dAddress", fields: [dAddressId], references: [id])
iAddressId Int?
dAddressId Int?
}
model Address {
id Int @id @unique @default(autoincrement())
street String
UserInvoice User[] @relation(name: "iAddress")
UserDelivery User[] @relation(name: "dAddress")
}
请注意,数据库中不存在关系字段,因此地址 table 中不存在 UserInvoice
和 UserDelivery
列。同样,invoiceAddress
和 deliveryAddress
列将不存在于用户 table.