Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Fungsi Pramuat GORM Boleh Mengambil Rekod Berkaitan dengan Cekap dalam Go?

Bagaimanakah Fungsi Pramuat GORM Boleh Mengambil Rekod Berkaitan dengan Cekap dalam Go?

Barbara Streisand
Lepaskan: 2024-12-10 18:13:14
asal
476 orang telah melayarinya

How Can GORM's Preload Function Efficiently Fetch Related Records in Go?

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
}
Salin selepas log masuk

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)
Salin selepas log masuk

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}}]
Salin selepas log masuk

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!

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