gpt4 book ai didi

postgresql - 如何在 gorm 中为 Association 请求主体属于并拥有一个

转载 作者:数据小太阳 更新时间:2023-10-29 03:07:57 24 4
gpt4 key购买 nike

I have People and Data ,其中 People 有一个 Data and 数据 属于 如何在 go gin 中为该协会发出请求正文 JSON?我在这种情况下使用 gorm,对于这种情况,我不清楚 gorm 的文档,我应该像

func CreateTodo(db *gorm.DB) func(c *gin.Context) {
var person Person
var data Data

c.bindJSON(&Person)
c.bindJSON(&Data)

db.create(&Person)
db.create(&Data)

c.JSON(200, gin.H{ result : []interface{person, data})
}
type (
Data struct {
ID uint `gorm:"auto_increment"`
PersonID uint
Person *Person `gorm:"foreignkey:PersonID;association_foreignkey:id"`
Address string
Languange string
}

Person struct {
gorm.Model
Email string `gorm:"type:varchar(100);unique_index;not null"`
Password string `gorm:"type:varchar(100);not null"`
Role string `gorm:"size:30;not null"`
DataID uint
Data *Data `gorm:""foreignkey:DataID;association_foreignkey:id"`
}
)

我确定它不会为 FK 生成 person_iddata_id我要问的是,在使用 FK 本身创建这些请求之前,我如何为该协会创建请求主体?我应该创建然后在创建后再次更新 person_iddata_id 吗?

最佳答案

Gorm 会为关联链接做几乎所有事情。您的 Person 结构中的“DataID”似乎没用。有关示例,请参见下面的代码:

package main

import (
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/sqlite"
)

type (
Data struct {
ID uint `gorm:"auto_increment"`
PersonID uint
Person *Person `gorm:"foreignkey:PersonID;association_foreignkey:id"`
Address string
Languange string
}

Person struct {
gorm.Model
Email string `gorm:"type:varchar(100);unique_index;not null"`
Password string `gorm:"type:varchar(100);not null"`
Role string `gorm:"size:30;not null"`
Data *Data `gorm:""foreignkey:PersonID;association_foreignkey:id"`
}
)

func main() {
db, err := gorm.Open("sqlite3", "test.db")
if err != nil {
panic("failed to connect database")
}
db.LogMode(true)
defer db.Close()

// Migrate the schema
db.AutoMigrate(&Person{}, &Data{})

data := &Data{
Address: "Shanghai,China",
Languange: "Chinese",
}
person := &Person{
Email: "zhjw43@163.com",
Data: data,
}
db.Save(person)

db.DropTable("data", "people")
}

关于postgresql - 如何在 gorm 中为 Association 请求主体属于并拥有一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57932273/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com