登录
首页 >  Golang >  Go问答

只读字段在 Gorm 创建后的使用

来源:stackoverflow

时间:2024-02-13 11:15:22 350浏览 收藏

对于一个Golang开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《只读字段在 Gorm 创建后的使用》,主要介绍了,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

问题内容

我需要将模型的属性之一设置为创建后只读。 我的代码正在工作,但是当我尝试更新时它不会抛出任何错误。

您能否帮助我了解如何在尝试更新时出现错误?

package main

import (
    "fmt"

    "gorm.io/gorm"
)

type product struct {
    gorm.model
    productid int    `gorm:"primarykey"`
    code      string `gorm:"->;<-:create"`
    price     uint
}

// testsuite is code to all tests, independent of database
func testsuite(db *gorm.db) { // migrate the schema
    db.automigrate(&product{})
    // create
    db.create(&product{code: "d4222", price: 1000, productid: 3})
    // read
    var product product
    db.first(&product, "product_id = ?", 3) // find product with product_id 2
    fmt.println("product code after creation: ", product.code)
    fmt.println("product price after creation: ", product.price)

    //update
    err := db.model(&product).where("product_id = ?", 3).updates(product{price: 400, code: "f42"}).error
    if err != nil {
        fmt.println(err)
    }
    // read after update
    var updateprod product
    db.first(&updateprod, "product_id = ?", 3) // find product with product_id 2
    fmt.println("product code after update: ", updateprod.code)
    fmt.println("product price after update: ", updateprod.price)

    // delete - delete product
    db.unscoped().delete(&updateprod, 3)
}
Output:
Product Code After Creation: D4222
Product Price After Creation: 1000
Product Code After Update: D4222
Product Price After Update: 400

正确答案


如果您的表未创建,则没有任何问题

如果您创建了表,并且您想将模型的两个属性设置为只读,如下所示:

type test struct {
       envid     string      `json:"env_id" gorm:"->"`                                                                                       
       partid    string      `json:"part_id" gorm:"index:depl_part;unique;priority:3;->"`
}

那么你必须运行以下代码

err := Client.AutoMigrate(&Test{})

现在 envid 和 partid 是只读的,直到您从 gorm 中删除 -> 并运行顶级代码。

以上就是《只读字段在 Gorm 创建后的使用》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>