gorm的Related和Association的区别是什么?

有如下结构:

type User struct {
    gorm.Model
    Name string
    Company []Company
}

type Company struct {
    gorm.Model
    Job    string
    User   User
    UserID int
}


    var user User
    var company []Company

    user.ID = 1

    db.Model(&user).Related(&company)
    db.Model(&user).Association("company").Find(&company)

使用Related和Association都可以查询出来关联的company的数据.那他们的差异是什么呢?### 题目描述

阅读 9.4k
1 个回答

二者区别在于谁主谁从
下述代码中user表是源,company关联源中的字段名,简而言之通过先查user-->commpany 最终的主表记录从user出发

    db.Model(&user).Association("company").Find(&company)

而Related方法其内的company表是要查主表源,主查company表user实例只是条件填充对象


db.Model(&user).Related(&company)
//// SELECT * FROM company WHERE user_id = 1; // 1 is user's primary key

开启sql打印一目了然

// 启用Logger,显示详细日志
db.LogMode(true)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏