Heim > Artikel > Backend-Entwicklung > FirstOrCreate vs. Upsert: Welche GORM-Methode sollten Sie zum Erstellen oder Aktualisieren von Datensätzen verwenden?
Erstellen oder Aktualisieren von Datensätzen mit GORM: FirstOrCreate vs. Upsert
GORM bietet zwei Methoden zum Erstellen oder Aktualisieren von Datensätzen: FirstOrCreate und FirstOrInit. Es kann jedoch schwierig sein, festzustellen, ob ein Datensatz tatsächlich mit diesen Methoden erstellt wurde.
Upsert-Unterstützung in GORM 1.20.x und höher
Seit Version 1.20.x GORM führt durch die OnConflict-Klausel eine kompatible Upsert-Unterstützung ein. Dies ermöglicht das Einfügen von Datensätzen in verschiedene Datenbanken.
// Update columns on conflict DB.Clauses(clause.OnConflict{ Columns: []clause.Column{{Name: "id"}}, DoUpdates: clause.AssignmentColumns([]string{"name", "age"}), }).Create(&users)
Alternativer Ansatz für GORM 1.9.x und höher
In früheren Versionen von GORM eine effiziente Methode zum Erstellen oder Datensätze aktualisieren, indem zuerst versucht wird, eine Aktualisierung durchzuführen, gefolgt von einer Einfügung, wenn der Datensatz nicht vorhanden ist.
if err := db.Model(&newUser).Where("id = ?", 3333).Update("name", "nick").Error; err != nil { if gorm.IsRecordNotFoundError(err) { db.Create(&newUser) } }
Unterscheidung zwischen FirstOrInit und FirstOrCreate
Es ist wichtig Beachten Sie den Unterschied zwischen FirstOrInit und FirstOrCreate. Während beide Methoden einen Zeiger auf einen vorhandenen oder einen neu erstellten Datensatz zurückgeben, initialisiert FirstOrInit nur die Struktur, ohne einen Datensatz zu erstellen, während FirstOrCreate einen Datensatz erstellt und ihn in die Struktur abfragt.
Das obige ist der detaillierte Inhalt vonFirstOrCreate vs. Upsert: Welche GORM-Methode sollten Sie zum Erstellen oder Aktualisieren von Datensätzen verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!