![](/img/trans.png)
[英]Rails 5 with PostgreSQL change table relation from polymorphic to standard has_one/belongs_to association
[英]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"`
}
)
我確信它不會使FK的person_id和data_id變成我所要求的,在由FK本身創建的那些請求之前,我如何才能為該Association創建請求主體? 我應該創建然后在創建后再次更新person_id和data_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.