多位员工属于同一个公司,一个公司包含多个人,关系放在多的那一部分
belongs to 会与另一个模型建立了一对一的连接。 这种模型的每一个实例都“属于”另一个模型的一个实例。
例如,您的应用包含 user 和 company,并且每个 user 能且只能被分配给一个 company。下面的类型就表示这种关系。 注意,在 User 对象中,有一个和 Company 一样的 CompanyID。 默认情况下, CompanyID 被隐含地用来在 User 和 Company 之间创建一个外键关系, 因此必须包含在 User 结构体中才能填充 Company 内部结构体。文章来源:https://www.toymoban.com/news/detail-667306.html
- 声明model
type Company struct {
ID int
Name string
Code string
}
type User struct {
gorm.Model
Name string
CompanyRefer int
Company Company `gorm:"foreignKey:CompanyRefer"`
// 使用 CompanyRefer 作为外键
}
- 创建表
package mysqltest
import (
"fmt"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/clause"
)
var db *gorm.DB
func Initdb() {
dsn := "ellis:ellis@tcp(192.168.214.134:3306)/go_db?charset=utf8mb4&parseTime=True&loc=Local"
var err error
db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic(err)
}
}
func Create(value interface{}) {
d := db.Create(value)
fmt.Printf("d.RowsAffected: %v\n", d.RowsAffected)
}
func InitTable() {
db.AutoMigrate(&Company{}, &User{})
}
- 创建记录
package main
import (
"ellis/mysqltest"
)
func main() {
mysqltest.Initdb()
// // 创建数据库
mysqltest.InitTable()
mysqltest.Create(&mysqltest.User{Company: mysqltest.Company{ID: 1, Code: "haha"}, Name: "ellis"})
}
https://gorm.io/zh_CN/docs/belongs_to.html文章来源地址https://www.toymoban.com/news/detail-667306.html
到了这里,关于go gorm belong to也就是多对一的情况的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!