Heim  >  Artikel  >  Backend-Entwicklung  >  FirstOrCreate vs. Upsert: Welche GORM-Methode sollten Sie zum Erstellen oder Aktualisieren von Datensätzen verwenden?

FirstOrCreate vs. Upsert: Welche GORM-Methode sollten Sie zum Erstellen oder Aktualisieren von Datensätzen verwenden?

Linda Hamilton
Linda HamiltonOriginal
2024-11-09 16:20:02350Durchsuche

FirstOrCreate vs. Upsert: Which GORM method should you use for creating or updating records?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn