Hey team, is there a way to reference a composite ...
# orm-help
s
Hey team, is there a way to reference a composite ID from another table?
Copy code
model ServiceMembership {
  service             Service    @relation(fields: [serviceId], references: [serviceId])
  serviceId           Int        @map("service_id")
  membership          Membership @relation(fields: [membershipId], references: [membershipId], onDelete: Cascade)
  membershipId        Int        @map("membership_id")
  assignedAt          DateTime   @default(now()) @map("assigned_at")
  prices              Price[]

  @@id([serviceId, membershipId])
  @@map(name: "service_membership")
}
I'd like to reference the ServiceMembership from the Price table. I can make it work by having a single referenced column in ServiceMembership but would prefer if I can use the existing composite ID (which it doesn't seem to support atm)
Copy code
model Price {
  priceId             Int               @id @default(autoincrement()) @map("price_id")
  serviceMembership   ServiceMembership @relation(fields: [serviceMembershipId], references: [serviceId, membershipId])
  serviceMembershipId Int               @map("service_membership_id")
1
n
Hey Shahid 👋 afaik you’d have to define two separate columns on
Price
in this case as well:
Copy code
model ServiceMembership {
  service               Service    @relation(fields: [serviceId], references: [serviceId])
  serviceId    Int      @map("service_id")
  membership            Membership @relation(fields: [membershipId], references: [membershipId], onDelete: Cascade)
  membershipId Int      @map("membership_id")
  assignedAt   DateTime @default(now()) @map("assigned_at")
  prices       Price[]


  @@id([serviceId, membershipId])
  @@map(name: "service_membership")
}

model Price {
  priceId           Int               @id @default(autoincrement()) @map("price_id")
  serviceMembership ServiceMembership @relation(fields: [serviceId, membershipId], references: [serviceId, membershipId])
  serviceId         Int               @map("service_id")
  membershipId      Int               @map("membership_id")
}
Can you check if this code would work for you?
s
It works, thanks Nikolas!
🙌 1