Modelle und AutoMigrate
Das Schema definieren und migrieren
Modelle und AutoMigrate ist eine kostenlose Go Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Go Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist GORM
GORM ist das beliebteste ORM für Go. Es bildet Go-Strukturen auf Datenbanktabellen ab, sodass Sie mit Objekten statt mit rohem SQL arbeiten. Es unterstützt PostgreSQL, MySQL, SQLite und weitere Datenbanken.
- Abbildung von Strukturen auf Tabellen
- Automatische Migrationen
- Assoziationen und Hooks
Ein Model definieren
Ein Model ist eine Go-Struktur. Jedes exportierte Feld wird zu einer Spalte. Durch das Einbetten von gorm.Model werden die Felder ID, CreatedAt, UpdatedAt und DeletedAt hinzugefügt.
type User struct {
gorm.Model
Name string
Email string
Age int
}Feld-Tags
Struct-Tags passen Spalten an. Mit dem gorm-Tag können Sie Größe, Eindeutigkeit, Indizes und Standardwerte festlegen. Ein Tag steht in Backticks nach dem Feldtyp, zum Beispiel gorm:"uniqueIndex;size:255".
type User struct {
// ID uint tag: gorm:"primaryKey"
// Email string tag: gorm:"uniqueIndex;size:255"
// Name string tag: gorm:"not null"
ID uint
Email string
Name string
}Namenskonventionen
GORM verwendet standardmäßig die Pluralform und snake_case: Eine User-Struktur wird auf eine Tabelle namens users abgebildet und das Feld CreatedAt auf created_at. Sie können diese Konventionen überschreiben.
Mit GORM öffnen
gorm.Open erwartet einen Dialector für Ihre Datenbank und gibt ein *gorm.DB zurück. Dieses Handle kapselt den Verbindungspool.
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
if err != nil {
log.Fatal(err)
}AutoMigrate
AutoMigrate erstellt Tabellen, fehlende Spalten und Indizes passend zu Ihren Strukturen. Die Funktion arbeitet nur ergänzend: Sie löscht keine Spalten und ändert Typen nicht auf destruktive Weise.
db.AutoMigrate(&User{}, &Product{})Was AutoMigrate nicht tut
AutoMigrate löscht niemals nicht mehr verwendete Spalten und verkleinert keine Typen, um Datenverlust zu vermeiden. Für Umbenennungen, Löschvorgänge oder Typänderungen benötigen Sie ein explizites Migrationstool.
Eine ausführbare Simulation der Model-Abbildung
GORM benötigt einen echten Datenbanktreiber. Dieses ausführbare Beispiel simuliert daher die Abbildung auf Tabellen und Spalten in snake_case, die AutoMigrate durchführt.
package main
import (
"fmt"
"strings"
)
func toSnake(s string) string {
var b strings.Builder
for i, r := range s {
if i > 0 && r >= 65 && r <= 90 {
b.WriteByte(95)
}
if r >= 65 && r <= 90 {
r = r + 32
}
b.WriteRune(r)
}
return b.String()
}
func main() {
model := "User"
fields := []string{"ID", "Name", "CreatedAt"}
fmt.Println("table:", toSnake(model)+"s")
for _, f := range fields {
fmt.Println("column:", toSnake(f))
}
}Das Feld DeletedAt
Wenn Ihr Model gorm.Model einbettet oder ein Feld gorm.DeletedAt besitzt, aktiviert GORM Soft Deletes. Gelöschte Zeilen erhalten einen Zeitstempel und werden bei Abfragen ausgeblendet, statt entfernt zu werden.
Benutzerdefinierte Tabellennamen
Implementieren Sie im Model eine TableName-Methode, um den Standardnamen zu überschreiben. Das ist hilfreich, wenn Ihr Schema Namen verwendet, die nicht den GORM-Konventionen entsprechen.
func (User) TableName() string {
return "app_users"
}Hinweis zu externen Paketen
GORM und seine Dialectors gehören nicht zur Standardbibliothek. Sie benötigen daher go get gorm.io/gorm und einen Treiber wie gorm.io/driver/postgres. Die GORM-Beispiele hier dienen der Veranschaulichung.
Kurzer Test
Testen Sie Ihr Wissen über Models.
Zusammenfassung
Sie haben Models und AutoMigrate kennengelernt:
- Strukturen werden auf Tabellen abgebildet; gorm.Model fügt ID und Zeitstempel hinzu
- Tags legen Primärschlüssel, Indizes und Einschränkungen fest
- Die Standardbenennung verwendet Pluralformen und snake_case
- AutoMigrate arbeitet nur ergänzend und niemals destruktiv
- DeletedAt aktiviert Soft Deletes
Häufig gestellte Fragen
Ist die Lektion „Modelle und AutoMigrate“ kostenlos?
Ja — der vollständige Text von „Modelle und AutoMigrate“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Go Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Modelle und AutoMigrate“?
Das Schema definieren und migrieren Du übst Go Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Go Academy zu starten?
Keine Vorkenntnisse erforderlich. Go Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Modelle und AutoMigrate“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Go Academy-Lektion Code schreiben und ausführen?
Ja. Jede Go Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Modelle und AutoMigrate
- CRUD-Operationen
- Assoziationen
- Hooks und Scopes