db.FirstOrCreate 和 db.Where().FirstOrCreate() 有何不同?

How do db.FirstOrCreate and db.Where().FirstOrCreate() differ?

// Unfound
db.FirstOrCreate(&user, User{Name: "non_existing"})
//// INSERT INTO "users" (name) VALUES ("non_existing");
//// user -> User{Id: 112, Name: "non_existing"}
// Found
db.Where(User{Name: "Jinzhu"}).FirstOrCreate(&user)
//// user -> User{Id: 111, Name: "Jinzhu"}

您好,我阅读了 gorm 的文档,但我无法找出两者之间的区别。 谁能解释一下

Documentation

Gorm 文档不全面而且有点含糊。根据我的理解,显式使用 where 和使用 where inside FirstOrCreate 没有区别。此示例的目的是表明您可以使用任何一种方式。

如果对象不存在("non_existing" 情况)那么它将执行 INSERT,否则它不会。