【问题标题】:Prisma update with relation in WHERE propertyPrisma 更新与 WHERE 属性中的关系
【发布时间】:2022-01-11 23:04:49
【问题描述】:

鉴于这些架构:

model awayinfo {
PlayerID   Int        @id
IsAway     Boolean
playerinfo playerinfo @relation(fields: [PlayerID], references: [ID])
}
    
model playerinfo {
name       String    @db.VarChar(15)
ID         Int       @id @unique @default(autoincrement())
awayinfo   awayinfo?
}

如果我拥有的唯一标识符是球员姓名而不是 ID,我将如何为 awayinfo 表创建 prisma SQL 更新?

我尝试了什么:

我尝试将一些东西传递到 WHERE 部分,如下所示:

const result = await prisma.awayinfo.update({
    where: {
      PlayerID: {
        name: name
      }
  },
    data: {
      IsAway: true,
    }
  });

但它总是给我错误:

Invalid `prisma.awayinfo.update()` invocation: 

Argument PlayerID: Got invalid value
{
  name: 'Dummy'

}
on prisma.updateOneawayinfo. Provided Json, expected Int.

我非常绝望,甚至尝试过像这样的不稳定选择

 const result = await prisma.awayinfo.update({
    where: {
      PlayerID: {
      playerinfo: {
        Where: {
        name: name
      },
      select: {ID: true},
    }}
  }, .....

但显然这也行不通。 我想知道我在这里遗漏了什么,我在 prisma 文档的 WHERE 子句中找不到任何条件示例

【问题讨论】:

    标签: sql prisma


    【解决方案1】:

    这里有两个问题,第一个在您的 Prisma 架构/数据模型中,第二个在您的查询中。

    使name 独一无二

    首先,如果您想用name 属性唯一标识playerinfo 表中的记录,则此属性必须unique。否则,如果有多个具有相同 name 属性的记录,您的数据库(和 Prisma)不可能知道要更新哪个玩家信息记录。

    相应地更新您的架构:

    model playerinfo {
      name     String    @unique @db.VarChar(15)
      ID       Int       @id @unique @default(autoincrement())
      awayinfo awayinfo?
    }
    

    重写更新查询

    由于您的更新中的where 条件引用了属性playerinfo 模型,因此您应该从那里开始查询。这是它的样子:

    const data = await prisma.playerinfo.update({
        where: {
            name: name
        }, 
        data: {
            awayinfo: {
                update: {
                    IsAway: true
                }
            }
        }
    })
    

    【讨论】:

    • 这个答案很详细,完全解决了问题。我自己想出了独特的部分,但再次感谢您指出这一点!
    • 欢迎您!乐于助人:D
    猜你喜欢
    • 2022-11-01
    • 2021-12-04
    • 2021-07-23
    • 2021-04-11
    • 1970-01-01
    • 2021-09-06
    • 2022-11-24
    • 2018-06-01
    • 2022-01-27
    相关资源
    最近更新 更多