'Can I map two columns in a one-to-many relationship in Prisma?

I'm trying to create a prisma schema, where I have an Order model, and a Client model. I would like to have a one-to-many relation between clients and orders.

I have it working with this Order model:

clientId     Client            @relation(fields: [clientId], references: [id])
clientId     Int

But wanted to also include the client name. Something like this doesn't work:

client       Client            @relation(fields: [clientName, clientId], references: [name, id])
clientName   String
clientId     Int

This gives me the error

Error validating: The argument `references` must refer to a unique criteria in the related model `Client`. But it is referencing the following fields that are not a unique criteria: name, id

Is this something that is possible within the Prisma schema? I can do it with my controller in NestJS, but ideally I would want to be done in the Prisma layer.



Solution 1:[1]

I solved this by adding a @@unique([name, id]) constraint on the Client model. However, I'm not sure if this is the correct or best way to do this.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Joel Tang