Struktur Dalam Struktur: Panduan untuk Pengimbasan Lanjutan SQLX
Semasa menggunakan SQLX, anda mungkin menghadapi cabaran mengimbas data ke dalam struktur bersarang. Mari kita pertimbangkan contoh ini:
type Customer struct { Id int `json:"id" db:"id"` Name string `json:"name" db:"name"` Address Address `json:"adress"` // Oops, missing embedded property } type Address struct { Street string `json:"street" db:"street"` City string `json:"city" db:"city"` }
Apabila cuba mengimbas data menggunakan definisi ini, anda akan menghadapi ralat ini:
missing destination name street in *models.Customer
Penyelesaian: Hayati Struktur Terbenam
Kunci untuk menyelesaikan isu ini terletak pada memahami keupayaan pengimbasan mendalam SQLX. Seperti yang dicadangkan oleh dokumentasi, ia menyokong struktur pembenaman, mempromosikan medan mereka ke dalam struktur induk. Untuk mencapai matlamat ini, hanya benamkan Alamat ke dalam Pelanggan:
type Customer struct { Id int `json:"id" db:"id"` Name string `json:"name" db:"name"` Address Address }
Perhatikan bahawa kami mengalih keluar teg db medan Alamat sendiri, kerana ia bukan lagi entiti yang berasingan.
Awas: Ratakan Output JSON
Walau bagaimanapun, membenamkan Alamat meratakan output JSON bagi struktur Pelanggan, kerana kedua-dua Nama dan Bandar kini adalah hartanah langsung:
{ "id": 1, "name": "foo", "street": "bar", "city": "baz" }
Alternatif Kemungkinan
Jika ini tidak diingini, terdapat beberapa pendekatan alternatif:
Atas ialah kandungan terperinci Bagaimana untuk Mengimbas Struktur Bersarang Dengan Berkesan Menggunakan SQLX?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!