繁体   English   中英

如何在 Prisma 中只有外键而不是整个 object

[英]How to only foreign key in Prisma not the whole object

我刚刚开始学习 nestjs,我使用 Prisma 作为我的 ORM,我创建了两个模型(员工、客户),这些模型将包含外键,客户将拥有员工 ID,反之亦然(一个 -一对一关系),但正如您将在模型中看到的那样,员工将包含整个客户“对象”,但我还想要的是他的客户 ID 作为一个独立的列:

这是模型:

model Employe {
  id        Int      @id @default(autoincrement())
  createdAt DateTime @default(now())
  updated   DateTime @updatedAt

  email String @unique
  hash  String

  nom    String
  prenom String

 // I want the client ID here too
  
  client Client? 

  @@map("employes")
}

model Client {
  id        Int      @id @default(autoincrement())
  createdAt DateTime @default(now())
  updated   DateTime @updatedAt

  email String @unique
  hash  String

  nom    String
  prenom String

  EmpId Int?     @unique
  emp   Employe? @relation(fields: [EmpId], references: [id], onDelete: Cascade, onUpdate: Cascade)

  @@map("clients")
}

那么有什么办法吗?

  • 框架:NestJS
  • ORM:棱镜
  • 数据库:Postgresql
  • 平台:Docker

我或多或少明白你的意思。 我不明白你为什么不设置关系,但你可以在创建客户或雇员时使用这种结构。

创造就业

await prisma.employe.create({
  data: {
    email: 'blabla',
    hash: 'balbla',
    nom: 'blabla',
    prenom: 'balbla',
    clientId: 123,
    include: {
        client: {
           ...,
        }
    }
  },
})

创建客户端

await prisma.client.create({
  data: {
    email: 'blabla',
    hash: 'balbla',
    nom: 'blabla',
    prenom: 'balbla',
    employeId: 123,
    include: {
        employe: {
           ...,
        }
    }
  },
})

client model 和 Employe model 中的emp字段是关系字段,因此它们不会存在于数据库中,它们只是在 prisma 级别。

您只需要在关系的一侧定义外键 - 一对一关系 Prisma 参考

您也可以将 clientId 存储在 Employe model 上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM