根据文件和gorm repo的问题,db.Create
是插入记录 .db.NewRecord
仅检查当前值是否具有主键 . 所以不要插入记录 .
我在下面写了这段代码 .
但是我可以用 db.Create
和 db.NewRecord
插入记录 .
这两种方法有什么不同?
for _, v := range oneday.Onedays {
if err := tx.Create(&v).Error; err != nil {
tx.Rollback()
return model.ResOnedays{}, err
}
// Photos
for i, pv := range v.Photos {
res := tx.NewRecord(&pv)
}
// Tags
for _, tv := range v.Tags {
tx.NewRecord(&tv)
}
}
1 回答
正如您所指出的,
Create
通过发出INSERT
来创建新行 .NewRecord
根本不影响数据库,如果当前值's primary key is unset, meaning it'是新记录,它只返回true
. 这意味着在void上下文中调用NewRecord
,就像你所做的那样,没有意义,因为你忽略了返回值 .