gorm 外键关联问题

FOREIGNKEY设置外键
ASSOCIATION_FOREIGNKEY设置关联外键

这二个有什么不一样,没理解到, FOREIGNKEY是指定一个字段为外键吗?ASSOCIATION_FOREIGNKEY设置外键与另一个外键进行关联吗?官方文档:

http://gorm.io/zh_CN/docs/belongs_to.html

type Profile struct {  gorm.Model  Name      string  User      User `gorm:"foreignkey:UserRefer"` // 使用 UserRefer 作为外键  UserRefer uint
}

问题:`gorm:"foreignkey:UserRefer"`为什么要写在User字段后面,而不是 UserRefer?


已邀请:

dbas - 90后女

官方文档:

http://gorm.io/zh_CN/docs/belongs_to.html

type Profile struct {
gorm.Model
Name string
User User `gorm:"foreignkey:UserRefer"` // 使用 UserRefer 作为外键
UserRefer uint
}

问题:`gorm:"foreignkey:UserRefer"`为什么要写在User字段后面,而不是 UserRefer?

用外键约束的太紧,尽量别用

myml - 97后,大二

gorm的外键更多的是为了关联而非约束。

type Profile struct {
ID int
Name string
User User `gorm:"foreignkey:UserRefer"`

        UserRefer uint

}

foreignkey:UserRefer 表示将UserRefer和User.ID关联,当查询Profile时,可以预加载Profile.UserRefer对应的User,即Profile => User 一对一的关系

执行的sql语句类似这样

select * from profile
select * from user where id in (UserReferer)

可使用db.LogMode(true)打开日志查看具体执行的sql语句

要回复问题请先登录注册