你在学习golang相关的知识吗?本文《如何防止 GORM 使用先前查询中的参数》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或
你在学习golang相关的知识吗?本文《如何防止 GORM 使用先前查询中的参数》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!
问题内容tx = tx.model(models.action{}).where("id = ?", 1).updatecolumn("state", "complete")
tx = tx.model(models.claim{}).where("id = ?", 2).update("some_field", nil)
预期的行没有被更新,使用 db.logmode(true)
打开日志记录并查看 gorm 生成的 sql:
update "actions" set "state" = 'complete' where (id = 2) and (id = 1)
update "claims" set "some_field" = null where (id = 2) and (id = 1) and (id = 2)
我不明白这些额外的 and 来自哪里,这是我可以让它生成所需查询的唯一方法:
UPDATE "actions" SET "state" = 'COMPLETE' WHERE ID = 1
UPDATE "claims" SET "some_field" = NULL WHERE ID = 2
...就是添加一个new()
,所以tx.new().model....
添加 new() 是执行此操作的正确方法吗?
您正在使用旧指针,这是多个 where 子句的原因。
你应该尝试一下
err := tx.Model(models.Action{}).Where("ID = ?", 1).UpdateColumn("state", "COMPLETE").Error
if err != nil {
tx.Rollback()
}
err = tx.Model(models.Claim{}).Where("ID = ?", 2).Update("some_field", nil).Error
if err != nil {
tx.Rollback()
}
到这里,我们也就讲完了《如何防止 GORM 使用先前查询中的参数》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注编程网公众号,带你了解更多关于的知识点!
--结束END--
本文标题: 如何防止 GORM 使用先前查询中的参数
本文链接: https://www.lsjlt.com/news/596386.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-04-05
2024-04-05
2024-04-05
2024-04-04
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-04
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0