一对一操作
一、增加
user_profile := relate_tables.UserProfile{
Pic:"1.jpg",CPic:"2.jpg",Phone:"xxx",
User:relate_tables.User{Name:"hallen",Age:18,Addr:"xxx"},
}
result := db.Create(&user_profile)
默认是关联创建或更新的
创建/更新时不会保存关联:`gorm:"save_associations:false"`
二、查询
1.第一种方式:Association
// 先查询出来,在根据Association属性值关联查询,Association的值为关联表的模型名称
var u_profile relate_tables.UserProfile
db.First(&u_profile,1)
fmt.Println(u_profile)
db.Model(&u_profile).Association("User").Find(&u_profile.User)
2.第二种方式:Preload
var u_profile relate_tables.UserProfile
db.Debug().Preload("User").First(&u_profile,1) // 关系名
fmt.Println(u_profile)
3.第三种方式:Related
var user_profile3 relate_tables.UserProfile
db.First(&user_profile3,1)
var user relate_tables.User
db.Model(&user_profile3).Related(&user,"User")
三、更新
// 先关联查询出来,再更新关联表中的字段
var u_profile1 relate_tables.UserProfile
db.Debug().Preload("User").First(&u_profile1,1)
fmt.Println(u_profile1)
db.Model(&u_profile1.User).Update("p_id",2)
四、删除
// 通过主表删除关联表中的
var u_profile2 relate_tables.UserProfile
db.Debug().Preload("User").First(&u_profile2,1)
db.Delete(&u_profile2.User)