Rumah > pembangunan bahagian belakang > Golang > Cara Mengimbas Hasil Pertanyaan GORM dengan Berkesan ke dalam Struktur: Panduan untuk Menyelesaikan Isu Pemetaan

Cara Mengimbas Hasil Pertanyaan GORM dengan Berkesan ke dalam Struktur: Panduan untuk Menyelesaikan Isu Pemetaan

Barbara Streisand
Lepaskan: 2024-10-27 05:25:29
asal
654 orang telah melayarinya

How to Effectively Scan GORM Query Results into Structs: A Guide to Resolving Mapping Issues

Mengimbas Keputusan Pertanyaan GORM ke dalam Struktur

Apabila membuat pertanyaan data menggunakan GORM, anda mungkin menghadapi masalah mengimbas hasil ke dalam struktur data tersuai. Artikel ini meneroka cara menyelesaikan cabaran sedemikian dengan berkesan.

Kod Contoh dan Penerangan Masalah

Pertimbangkan kod berikut yang mendapatkan semula data daripada dua jadual, pengguna dan kad_kredit, menggunakan gabungan kiri:

<code class="go">type res struct {
    id       int
    number   int
    user_id int
}

func getDataJoin() {
    new := []res{}
    db.Db.Table("users").Select("users.id as id, credit_cards.number as number, credit_cards.user_id as user_id").Joins("left join credit_cards on credit_cards.user_id = users.id").Scan(&new)
    fmt.Println("user\n", new)
}</code>
Salin selepas log masuk

Pertanyaan ini menjana hasil berikut:

[
  {0 0 0},
  {0 0 0},
  {0 0 0},
  {0 0 0},
  {0 0 0},
  {0 0 0}
]
Salin selepas log masuk

Walaupun memperoleh set keputusan pertanyaan yang betul dalam pangkalan data, tatasusunan baharu hanya terdiri daripada nilai lalai.

Penyelesaian: Konvensyen Penamaan Medan dan Pemetaan

Untuk menangani masalah ini, pastikan nama medan dalam struktur semula sejajar dengan nama lajur pangkalan data. Secara lalai, GORM menjangkakan nama medan sepadan dengan nama lajur dengan tepat. Sebagai alternatif, anda boleh menentukan pemetaan eksplisit antara lajur dan medan menggunakan teg gorm:

<code class="go">// Solution 1: Public Fields

type Res struct {
    ID       int
    Number   int
    UserID   int
}

// Solution 2: Explicit Mapping

type res struct {
    id       int      `gorm:"column:id"`
    number   int      `gorm:"column:number"`
    user_id  int      `gorm:"column:user_id"`
}</code>
Salin selepas log masuk

Dengan menggunakan penyelesaian ini, GORM boleh mengimbas hasil pertanyaan dengan betul ke dalam tatasusunan baharu.

Atas ialah kandungan terperinci Cara Mengimbas Hasil Pertanyaan GORM dengan Berkesan ke dalam Struktur: Panduan untuk Menyelesaikan Isu Pemetaan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan