Gorm: Namen der standardmäßig generierten Spalten ändern

Erstellt am 18. Mai 2017  ·  3Kommentare  ·  Quelle: go-gorm/gorm

Hallo, ist es möglich, den Namen der Spalten zu überschreiben: ID, created_at, updated_at, delete_at ?

So weit ich weiß kann ich zum Beispiel den Namen der Tabelle mit der Funktion setzen:

func (StructType) TableName() string {
    return "MyCustomName"
}

Ist es möglich, aber mit den Spalten? Dies liegt daran, dass das Datenmodell des Projekts bereits die Namen der Felder festgelegt hat und wir beispielsweise nicht _updated_at_, sondern _ModificationTimestamp_ haben. Wie kann ich das tun?

Hilfreichster Kommentar

Betten Sie einfach nicht den Standardmodus in Ihre Struktur ein. Wenn Sie sehen, wie es definiert ist, sehen Sie:

type Model struct {
    ID        uint `gorm:"primary_key"`
    CreatedAt time.Time
    UpdatedAt time.Time
    DeletedAt *time.Time `sql:"index"`
}

Sie können diese Felder in Ihrem eigenen Modell definieren oder ein eigenes Basismodell mit anderen Namen erstellen und einbetten.

Alle 3 Kommentare

http://jinzhu.me/gorm/models.html#conventions

// Overriding Column Name
type Animal struct {
    AnimalId    int64     `gorm:"column:beast_id"`         // set column name to `beast_id`
    Birthday    time.Time `gorm:"column:day_of_the_beast"` // set column name to `day_of_the_beast`
    Age         int64     `gorm:"column:age_of_the_beast"` // set column name to `age_of_the_beast`
}

@smacker Hallo, danke. Aber ich versuche gerade, gorm dazu zu bringen, einen anderen Namen für die automatisch erstellten Spalten zu verwenden: created_at, updated_at, id. Ich habe versucht, was Sie gesagt haben, aber es gab einen Fehler, weil zum Beispiel die Spalte created_at bereits angegeben ist:
column "created_at" specified more than once)

Betten Sie einfach nicht den Standardmodus in Ihre Struktur ein. Wenn Sie sehen, wie es definiert ist, sehen Sie:

type Model struct {
    ID        uint `gorm:"primary_key"`
    CreatedAt time.Time
    UpdatedAt time.Time
    DeletedAt *time.Time `sql:"index"`
}

Sie können diese Felder in Ihrem eigenen Modell definieren oder ein eigenes Basismodell mit anderen Namen erstellen und einbetten.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen