我有三个棱镜模型,
model user {
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @default(now())
courses userOnCourse[]
}
model course {
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @default(now())
users userOnCourse[]
title String
description String
}
model userOnCourse {
createdAt DateTime @default(now())
user user @relation(fields: [userId], references: [id])
userId String
course Course @relation(fields: [courseId], references: [id])
courseId String
@@id([userId, courseId])
}
这是一个多对多关系,一个用户可以有多个课程,一个课程可以有多个用户,为了引用显式的m-m关系,我创建了另一个模型,名称为userOnCourse。
我很难将courseId的引用传递到userOnCourse模型中,我想将课程与userid一起连接到该模型中,但由于它是在运行时创建的,因此似乎不可能在编译时传递courseId。
下面是代码,假设我们在创建课程时已经有了用户数据,如何传递在运行时创建的courseId,并建立连接.
我从prisma docs跟踪这个参考。
const createCourse = await prisma.course.create({
data: {
title: courseData.title,
description: courseData.description,
users: {
connect: {
userId_courseId: {
userId: user.id,
courseId: ?? // That is where the problem is, how can i add the coursesId?
},
},
},
},
});
3条答案
按热度按时间khbbv19g1#
您需要的是
create
,而不是connect
。您需要在多对多表中创建一个新条目,将User
Map到Course
。因此,您需要create
该条目。代码为:
1bqhqjot2#
如果您需要分配已存在的实体:
这是令人困惑的,因为它说创建,但它的意思是创建一个连接到一个已经存在的实体。
mrfwxfqh3#
当我使用createMany()时,这里的答案对我都不起作用。
直到我切换到create(),接受的答案才起作用。
以防其他人碰到这个。