如何在 prisma 中创建与同一字段的多个关系

Dul*_*ndu 3 prisma prisma-graphql

这是我的 datamodel.prisma 文件的相关部分。

type Driver {
  id: ID! @unique
  zones: [Zone!] @relation(name: "DriverZones")
  shifts: [Shift!] @relation(name: "DriverShifts")
  preferredZone: Zone
  preferredShift: Shift
}


type Shift {
  id: ID! @unique 
  drivers: [Driver! ] @relation(name: "DriverShifts") 
}


type Zone {
  id: ID! @unique 
  drivers: [Driver! ] @relation(name: "DriverZones") 
}
Run Code Online (Sandbox Code Playgroud)

在这里,我想根据我创建的数据模型为preferredZone 和preferredShift 创建类型为Zone 和Shift 的关系。这是一种单向关系。

关系字段preferredShift必须指定一个@relation指令:@relation(name: "MyRelation") ,关系字段preferredZone必须指定一个@relation指令:@relation(name: "MyRelation")

我的 prisma 数据库使用 PostgreSQL。如何建立preferredZone到Zone之间的关系。并将首选Shift 改为Shift。

Mat*_*tel 8

您需要命名这些关系,因为相同类型之间有两个关系(Driver <-> Shift 和 Driver <-> Zone 均由两个关系连接)。

在这种情况下,Prisma 会要求您命名关系,这就是您发布的错误消息的内容。我认为这个数据模型应该有效:

type Driver {
  id: ID! @unique
  zones: [Zone!] @relation(name: "DriverZones")
  shifts: [Shift!] @relation(name: "DriverShifts")
  preferredZone: Zone @relation(name: "PreferredZone")
  preferredShift: Shift @relation(name: "PreferredShift")
}


type Shift {
  id: ID! @unique 
  drivers: [Driver! ] @relation(name: "DriverShifts") 
}


type Zone {
  id: ID! @unique 
  drivers: [Driver! ] @relation(name: "DriverZones") 
}
Run Code Online (Sandbox Code Playgroud)