Pengguna Gorm menghadapi halangan semasa cuba menyimpan tatasusunan integer dalam medan tunggal pangkalan data PostgresQL menggunakan rangka kerja. Mesej ralat, "panic: invalid sql type (slice) for postgres," timbul disebabkan oleh ketidakpadanan lalai antara jenis data slice Gorm dan sokongan tatasusunan asli PostgresQL.
Untuk menangani isu ini dengan berkesan, adalah perlu untuk menggunakan jenis tersuai yang disediakan oleh perpustakaan pangkalan data asas. Dalam kes ini, pakej pq menawarkan jenis pq.Int64Array, yang menyokong tatasusunan PostgresQL secara asli. Kod berikut menunjukkan penggunaan yang betul:
<code class="go">type Game struct { gorm.Model GameCode string GameName string DeckType pq.Int64Array `gorm:"type:integer[]"` GameEndDate string }</code>
Where Game.DeckType menentukan jenis menggunakan teg gorm:"type:integer[]", dengan berkesan mentakrifkannya sebagai tatasusunan integer dalam pangkalan data PostgresQL.
Selepas mewujudkan jenis tersuai, anda boleh dengan mudah memasukkan tatasusunan integer ke dalam pangkalan data:
<code class="go">dt := []int64{1, 2, 3} db.Create(&Game{GameCode: "xxx", GameName: "xxx", DeckType: pq.Int64Array(dt), GameEndDate: "xxx"})</code>
Kod ini mencipta rekod baharu dalam Permainan jadual, tempat DeckType disimpan sebagai tatasusunan integer.
Atas ialah kandungan terperinci Bagaimana untuk Menyimpan Array Integer sebagai Jenis Data Model Gorm dalam PostgresQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!