FirstOrCreate具有许多外键ID映射?

时间:2018-07-31 00:26:20

标签: database go foreign-keys go-gorm

我正在尝试执行以下操作:

  1. 首先检查收集记录是否存在。否则,收集表将创建一条新记录,否则保留现有记录。
  2. 记录每个执行及其相应的collection_id。
  3. 每次执行都是不同的,因此collection->执行是一对多映射。

    type Collection struct {
          ID             int
          CollectionName string      gorm:"primary_key"
          CommitHash     string      gorm:"primary_key"
          Executions     []Execution 
    }
    
    type Execution struct {
         TimeStamp      time.Time
         SubDomain      string
         CollectionID   int
    }
    

这是主要的

db.AutoMigrate(&Collection{}, &Execution{})
execution := Execution{
    TimeStamp: time.Now(),
    SubDomain: "dev"}

db.Create(&execution)
collection := Collection{
    CollectionName: "Testing.json",
    CommitHash:     "123456",
    Executions:     []Execution{execution}}

db.FirstOrCreate(&collection)

收集的当前结果很好-如果重复,则不会创建新记录。但是执行记录正在为collection_id列生成全0。

执行3次后,结果将如下所示:

id   time_stamp                    subdomain   collection_id
1   2018-07-31 00:18:42.341261+00   dev         1
2   2018-07-31 00:19:03.779787+00   dev         0
3   2018-07-31 00:19:15.626205+00   dev         0

而收集表中只有一条1 Testing.json 123456记录。

如何正确地将collection_id映射回去?

0 个答案:

没有答案