显式多对多关系 prisma
Explicit many to many relation prisma
我有这 3 个 prisma 模型,
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 文档的 reference。
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?
},
},
},
},
});
您需要的是 create
而不是 connect
。您需要在多对多 table 映射 User
与 Course
中创建一个新条目。所以你需要create
那个条目。
代码为:
await prisma.course.create({
data: {
description: 'des',
title: 'title',
users: { create: { userId: user.id } },
},
})
如果您需要分配已经存在的实体:
const response: course = await prisma.course.create(
{ data:
{ ...someOtherData,
userOnCourse: { create: [ {user: { connect: { id: 2 } } } ]}
}
}
);
这很令人困惑,因为它说的是创建,但它的意思是创建与现有实体的连接。
我有这 3 个 prisma 模型,
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 文档的 reference。
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?
},
},
},
},
});
您需要的是 create
而不是 connect
。您需要在多对多 table 映射 User
与 Course
中创建一个新条目。所以你需要create
那个条目。
代码为:
await prisma.course.create({
data: {
description: 'des',
title: 'title',
users: { create: { userId: user.id } },
},
})
如果您需要分配已经存在的实体:
const response: course = await prisma.course.create(
{ data:
{ ...someOtherData,
userOnCourse: { create: [ {user: { connect: { id: 2 } } } ]}
}
}
);
这很令人困惑,因为它说的是创建,但它的意思是创建与现有实体的连接。