小编sky*_*cyr的帖子

是否可以使 GORM 中的 db.Preload() 成为自动预加载?

模型.go:


type First struct {
    ID            int     `json:"id" gorm:"column:id;primary_key"`
    Status        string  `json:"status" gorm:"column:status"`
    SecondID      int     `json:"second_id" gorm:"column:second_id"`
    SecondData    Second  `json:"second_data" gorm:"foreignKey:SecondID;references:ID"`
}

type Second struct {
    ID            int     `json:"id" gorm:"column:second_id;primary_key"`
    Status        string  `json:"status" gorm:"column:status"`
    Description   string  `json:"description" gorm:"column:description"`
}

var res []model.First

db.Raw("first.*, second.* FROM first LEFT JOIN second ON first.second_id = second.second_id")
db.Preload("SecondData").Find(&res).Error

Run Code Online (Sandbox Code Playgroud)

输出:

{
    "id": 1,
    "status": "A",
    "second_id": 1
    "second_data": {
        "id": 1
        "status": "B",
        "description": "blablabla"
    }
}

Run Code Online (Sandbox Code Playgroud)

我真的不知道 db.Preload() 是如何工作的。为什么每次我需要做嵌套结构时我都应该使用 db.Preload() 来获取“SecondData”?是否可以只使用 db.Row() 或 db.Table().Joins().Where().Find(),我的意思是没有 …

go go-gorm

6
推荐指数
1
解决办法
42
查看次数

docker run migrate 是否可能仅使用一个特定的迁移文件?

我尝试在我的 golang 应用程序中使用 docker 和 mysql 数据库进行迁移。但我只想做一个特定的迁移文件而不是整个迁移文件

来源: https: //github.com/golang-migrate/migrate

我发现了什么:

docker run -v {{ migration dir }}:/migrations --network host migrate/migrate
    -path=/migrations/ -database "mysql://user:password@tcp(host:port)/database up 2
Run Code Online (Sandbox Code Playgroud)

注意:2 表示2 个迁移文件

我用的是:

sudo docker run -v /home/user/app/schema:/migrations --network host migrate/migrate 
    -path=/migrations/ -database "mysql://root:root@tcp(localhost:8080)/my_db" up
Run Code Online (Sandbox Code Playgroud)

我想要 docker run 迁移最后/最新的迁移文件/特定的迁移文件,但我不知道如何。

mysql database-migration go docker

5
推荐指数
0
解决办法
303
查看次数

标签 统计

go ×2

database-migration ×1

docker ×1

go-gorm ×1

mysql ×1