簡體   English   中英

如何使協會的請求主體屬於一個組織

[英]how to make request body in gorm for Association belongs to and has one

我有人員數據 ,其中人員 有一個 數據,並且數據 屬於 人員,如何在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"`
    }
)

我確信它不會使FKperson_iddata_id變成我所要求的,在由FK本身創建的那些請求之前,我如何才能為該Association創建請求主體? 我應該創建然后在創建后再次更新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")
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM