Heim >Backend-Entwicklung >Golang >Bei der automatischen Migration wurden ungültige Strukturfelder gefunden
Wenn ich versuche, Tabellen basierend auf meiner Struktur automatisch zu migrieren, erhalte ich diese Fehlermeldung. Ich weiß nicht, warum ich diese Fehlermeldung erhalte
failed to parse value &models.model{id:0x0, createdat:time.date(1, time.january, 1, 0, 0, 0, 0, time.utc), updatedat:time.date(1, time.january, 1, 0, 0, 0, 0, time.utc), deletedat:, dogdata:[]models.dogdata(nil)}, got error invalid field found for struct github.com/dog-page/models.model's field dogdata: define a valid foreign key for relations or implement the valuer/scanner interface
Ich bin neu in der Golang-Sprache und in Gorm, insbesondere wenn es um die Erstellung von Strukturen für JSON-Rohdaten geht. Hier ist meine Absicht, die Struktur von Gorm zu verwenden:
type Model struct { ID uint `gorm:"primarykey:id" json:"id:_id"` CreatedAt time.Time `gorm:"column:created_at" json:"created_at"` UpdatedAt time.Time `gorm:"column:updated_at" json:"updated_at"` DeletedAt *time.Time `gorm:"column:deleted_at" json:"deleted_at"` DogData []DogData } type DogData struct { DogDataID uint Name string `json:"name"` Life_Span string `json:"life_span"` Temperaments string `json:"temperament"` Weight datatypes.JSON `json:"weight"` Height datatypes.JSON `json:"height"` Image datatypes.JSON `json:"image"` } type Weight struct { Imperial string `json:"imperial"` Metric string `json:"metric"` } type Height struct { Imperial string `json:"imperial"` Metric string `json:"metric"` } type Image struct { URL string `json:"url"` }
Modellfelder dogdata: Gültige Fremdschlüssel für Beziehungen definieren
Das Modell hat eine „Eins-zu-viele“-Beziehung mit Dogdata und Gorm kann Fremdschlüssel nicht erkennen. Sie müssen die Spalte in
angeben (gorm sucht standardmäßig nach modelid),
type model struct { id uint `gorm:"primarykey:id" json:"id:_id"` ... dogdata []dogdata } type dogdata struct { modelid uint dogdataid uint ... } //create table `dog_data` (`model_id` integer,`dog_data_id` integer,`name` text,`life_span` text,`temperaments` text,constraint `fk_models_dog_data` foreign key (`model_id`) references `models`(`id`))
dogdata
中存储 model.id
Oder wenn Sie eine andere Spalte verwenden möchten, anstatt die Spalte mit dem Foreignkey-Tag anzugeben
type model struct { id uint `gorm:"primarykey:id" json:"id:_id"` ... dogdata []dogdata `gorm:"foreignkey:dogdataid"` } type dogdata struct { dogdataid uint ... } //create table `dog_data` (`model_id` integer,`dog_data_id` integer,`name` text,`life_span` text,`temperaments` text,constraint `fk_models_dog_data` foreign key (`dog_data_id`) references `models`(`id`))
Ich bin mir über den Anwendungsfall nicht sicher, aber ich denke
das Gleiche
type DogData struct { gorm.Model Name string `json:"name"` ... }
Das obige ist der detaillierte Inhalt vonBei der automatischen Migration wurden ungültige Strukturfelder gefunden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!