Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Gorm Melemparkan Ralat Kunci Asing Walaupun Hubungan Model Nampak Betul?

Mengapa Gorm Melemparkan Ralat Kunci Asing Walaupun Hubungan Model Nampak Betul?

Susan Sarandon
Susan Sarandonasal
2024-11-22 12:24:15180semak imbas

Why Does Gorm Throw a Foreign Key Error Despite Seemingly Correct Model Relationships?

Ralat Kunci Asing dalam Hubungan Gorm

Semasa cuba mendapatkan semula model daripada pangkalan data menggunakan Gorm, mesej ralat timbul: "medan tidak sah ditemui untuk model struct. Lokasi medan ConfigurationDescription, perlu menentukan kunci asing yang sah untuk hubungan atau ia perlu melaksanakan antara muka Penilai/Pengimbas." Ralat ini berlaku walaupun model data nampaknya mengikut garis panduan dokumentasi Gorm.

Model data yang diberikan mentakrifkan hubungan Kepunyaan-Kepunyaan antara ConfigurationDescription dan LocationDescription. Walau bagaimanapun, teg kunci asing dan teg rujukan dalam struct ConfigurationDescription nampaknya diterbalikkan.

Dalam corak hubungan Kepunyaan-Kepada, teg foreignKey harus menamakan medan kunci tempatan model yang bercantum dengan entiti asing , manakala teg rujukan harus menamakan kunci utama atau unik entiti asing.

Untuk menyelesaikan isu, teg dalam ConfigurationDescription struct hendaklah ditukar seperti berikut:

type ConfigurationDescription struct {
    ID         int                 `json:"configurationID"`
    Name       string              `json:"name"`
    IsActive   bool                `json:"isActive"`
    LocationID int                 `json:"-"`
    Location   LocationDescription `json:"location,omitempty" gorm:"foreignKey:ID;references:LocationID"`
}

Dengan teg ini diperbetulkan, Gorm harus mengenali dengan betul perhubungan antara kedua-dua model dan mendapatkan semula data dengan jayanya tanpa menghadapi ralat kunci asing.

Atas ialah kandungan terperinci Mengapa Gorm Melemparkan Ralat Kunci Asing Walaupun Hubungan Model Nampak Betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn