Many to Many

2022-08-28  本文已影响0人  中華小龍

Prisma多对多操作分为隐式(Implicit many-to-many relations)和显式(Explicit many-to-many relations)两种,区别在于隐式关联表真的具有“魔法”,操作简化,Prisma自动帮助处理很多复杂操作。
显式关联表也有其优点,比如可以自定义增加关联表字段(创建关联时间、操作信息等等)。

在显式多对多关系中,关系表在Prisma模式中表示为模型,可用于查询。显式多对多关系定义了三种模型:

以下是我无数次试错找到的解决办法

    // TODO 显式关系表的更新,先删除后创建
    await prisma.book.update({
        where: { id: 'cl7d2hp5z00058su3g13sqffg' },
        data: {
            categories: {
                deleteMany: { bookId: 'cl7d2hp5z00058su3g13sqffg' },
                create: [
                    { category: { connect: { name: '武侠小说' } } },
                    { category: { connect: { name: '言情小说' } } },
                    { category: { connect: { id: 'cl7d2hp5v00008su3c9k6a5ga' } } }
                ]
            }
        }
    })


    // TODO 通过关联表查(booksOnCategories)找所有数据
    const allBooks = await prisma.booksOnCategories.findMany({
        select: { category: { select: { name: true } }, book: { select: { title: true } } }
        // include: { category: true, book: true }
    })
    console.log(allBooks)
上一篇 下一篇

猜你喜欢

热点阅读