如何在Prisma中映射关系字段?解决@map属性报错问题
Prisma关联字段列名映射解决方案
你遇到的错误是因为Prisma不允许直接在关联字段上使用@map属性。要给关联对应的数据库列名做映射,需要拆分外键字段和关联字段:
- 单独定义存储外键的字段,对这个字段使用
@map来指定数据库列名 - 关联字段通过
@relation的fields参数指向这个外键字段
修改后的User模型示例:
model User{ @@map("users") ID Int @id @default(autoincrement()) @unique Firstname String @map("firstname") @db.VarChar(45) Lastname String @map("lastname") @db.VarChar(45) Phone String @map("phone") @db.VarChar(60) @unique EMail String @map("email") @db.VarChar(45) @unique Username String @map("username") @db.VarChar(45) @unique Password String @map("password") @db.VarChar(255) // 外键字段,映射到数据库的`role`列 roleId Int @map("role") // 关联字段,通过roleId和Role模型建立关联 Role Role @relation(fields: [roleId], references: [ID]) IsLocked Boolean @map("isLocked") @default(false) Avatar String? @db.VarChar(36) @unique } // 确保你的Role模型定义正确,示例如下 model Role { ID Int @id @default(autoincrement()) // 可选:添加反向关联,方便从Role查询关联的User users User[] }
这样修改后,数据库中User表的role列会和Role表的ID关联,同时满足了你对列名映射的需求,也符合Prisma的语法规范。
内容的提问来源于stack exchange,提问作者user17145524
相关产品推荐
相关产品推荐

