Heim  >  Artikel  >  Backend-Entwicklung  >  GORM CreateInBatches mit eingebettetem Strukturfehler

GORM CreateInBatches mit eingebettetem Strukturfehler

WBOY
WBOYnach vorne
2024-02-05 21:27:12732Durchsuche

带有嵌入式结构错误的 GORM CreateInBatches

Frageninhalt

Ich habe die folgende Struktur (zur besseren Lesbarkeit gekürzt)

type schedule struct {
    id              int  
    userid          int
    user            user    `gorm:"embedded;foreignkey:userid;references:userid"`
}

Und dann ist hier meine Benutzerstruktur (zur besseren Lesbarkeit noch einmal gekürzt):

type user struct {
    id         int
    userid     int
    isactive   bool 
}

Ich erhalte die Werte in der schedule 结构上尝试 createinbatches (如 []schedule )。但是当我这样做时,插入查询还尝试插入 user-Struktur.

Beispiel (Teil des Codes) einfügen:

err := db.transaction(func(tx *gorm.db) error {
    if err := tx.createinbatches(&schedules, len(schedules)).error; err != nil {
        return err //rollback
    }
}

Der Vollständigkeit halber hier die Fehler:

Error Inserting Schedule Batch: Error 1054: Unknown column 'is_active'
in 'field list'

Gibt es ein Tag oder etwas, das ich tun kann, um die Benutzerstruktur aus der Einfügeabfrage wegzulassen? Wenn ich die Abfrage ausgebe, wird sie angezeigt insert into schedule(计划列...,[附加用户结构列])

Ich habe auch das Feldberechtigungs-Tag basierend auf der Dokumentation hier ausprobiert


Richtige Antwort


Das Problem ist, dass Sie sich im schedule 结构中为 user 使用 embedded-Tag befinden. Wenn Sie es entfernen, sollte es wie erwartet funktionieren. Sie können darüber in Dokumente

nachlesen

Deine scheduleStruktur sollte also so aussehen:

type Schedule struct {
    ID              int  
    UserId          int
    User            User `gorm:"foreignKey:UserId;references:UserId"`
}

Das obige ist der detaillierte Inhalt vonGORM CreateInBatches mit eingebettetem Strukturfehler. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen