Persatuan ORM GORM Golang: Pramuat Rekod Berkaitan
GORM ialah ORM popular untuk Go yang memudahkan operasi pangkalan data. Apabila bekerja dengan ORM, mengurus persatuan antara rekod yang berkaitan adalah penting. Dalam konteks ini, kami akan meneroka cara mendapatkan semula rekod berkaitan dengan cekap menggunakan ciri pramuat GORM.
Pertimbangkan senario di mana kami mempunyai dua struktur: Tempat dan Bandar. Setiap Tempat adalah milik satu Bandar, dan setiap Bandar mempunyai berbilang Tempat.
type Place struct { ID int Name string Town Town } type Town struct { ID int Name string }
Untuk mengambil semua Tempat dan dengan penuh semangat memuatkan Bandar yang sepadan untuk setiap Tempat, kita boleh menggunakan fungsi Pramuat:
db.Preload("Town").Find(&places)
Barisan tunggal kod ini melaksanakan dua pertanyaan: satu untuk mengambil semua Tempat dan satu lagi untuk mengambil semua Bandar yang mempunyai Tempat yang sepadan. Potongan struct Place yang terhasil akan mengisi medan Town.
fmt.Println(places) // Output: [{1 Place1 {1 Town1}} {2 Place2 {1 Town1}}]
Pendekatan ini cekap kerana ia mengelakkan masalah N 1, yang berlaku apabila anda perlu melaksanakan N pertanyaan tambahan untuk mendapatkan semula rekod berkaitan. Pramuat membolehkan kami mendapatkan semula semua data yang diperlukan dalam hanya dua pertanyaan, menjadikannya lebih cekap untuk set data yang lebih besar.
Atas ialah kandungan terperinci Bagaimanakah Fungsi Pramuat GORM Boleh Mengambil Rekod Berkaitan dengan Cekap dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!