Heim > Backend-Entwicklung > Golang > Bei der automatischen Migration wurden ungültige Strukturfelder gefunden

Bei der automatischen Migration wurden ungültige Strukturfelder gefunden

WBOY
Freigeben: 2024-02-12 17:30:06
nach vorne
944 Leute haben es durchsucht

Bei der automatischen Migration wurden ungültige Strukturfelder gefunden

Frageninhalt

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
Nach dem Login kopieren

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"`
}
Nach dem Login kopieren

Lösung

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`))
Nach dem Login kopieren
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`))
Nach dem Login kopieren

Ich bin mir über den Anwendungsfall nicht sicher, aber ich denke

das Gleiche

type DogData struct {
    gorm.Model
    Name         string         `json:"name"`
    ...
}
Nach dem Login kopieren

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!

Quelle:stackoverflow.com
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage