Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Medan struktur tidak sah ditemui semasa penghijrahan automatik

Medan struktur tidak sah ditemui semasa penghijrahan automatik

WBOY
WBOYke hadapan
2024-02-12 17:30:06887semak imbas

Medan struktur tidak sah ditemui semasa penghijrahan automatik

Kandungan soalan

Apabila saya cuba memindahkan jadual secara automatik berdasarkan struktur saya, saya mendapat ralat ini, saya tidak tahu mengapa saya mendapat ralat ini

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

Saya baru dalam bahasa golang dan gorm, terutamanya apabila ia datang untuk mencipta struktur untuk data json mentah, inilah niat saya untuk menggunakan struktur gorm:

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"`
}

Penyelesaian

Data medan model: Tentukan kunci asing yang sah untuk perhubungan

Model ini mempunyai hubungan satu-ke-banyak dengan dogdata, dan gorm tidak dapat mengecam kunci asing.

Anda perlu menentukan lajur dalam dogdata 中存储 model.id (gorm mencari model secara lalai),

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`))

Atau jika anda ingin menggunakan lajur lain dan bukannya menentukan lajur menggunakan teg foreignkey

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`))

Tidak pasti tentang use case, tetapi saya rasa dogdata 可以简化为,完全删除 model 结构,因为它与 gorm.model sama

type DogData struct {
    gorm.Model
    Name         string         `json:"name"`
    ...
}

Atas ialah kandungan terperinci Medan struktur tidak sah ditemui semasa penghijrahan automatik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam