Operasi Lanjutan
1. Query dengan Relasi:
Jika Anda memiliki model yang berhubungan, Anda dapat dengan mudah menarik relasi tersebut:
type Profile struct {
ID uint
Name string
UserID uint
User User
}
db.Preload("User").Find(&profiles)
// Membuat profile untuk user baru
newProfile := Profile{Name: "Alice Wonderland", UserID: newUser.ID}
db.Create(&newProfile)
// Menampilkan semua profil dengan informasi pengguna yang terkait
var profiles []Profile
db.Preload("User").Find(&profiles)
for _, profile := range profiles {
fmt.Printf("Profile Name: %s, Username: %s, Email: %s\n", profile.Name, profile.User.Username, profile.User.Email)
}Preloadmemastikan bahwa relasiUseruntuk setiapProfilejuga dimuat.
2. Pemilihan Kolom Khusus:
Jika Anda hanya ingin memilih beberapa kolom tertentu:
3. Pengurutan dan Limitasi:
Mengurutkan hasil berdasarkan kolom tertentu dan membatasi jumlah hasil:
4. Pengelompokan dan Agregasi:
Misalkan Anda ingin menghitung jumlah pengguna dengan email domain yang sama:
5. Menggunakan Raw SQL:
Jika Anda perlu menulis query SQL kustom:
6. Pengkondisian Lebih Lanjut:
Untuk kasus-kasus yang lebih kompleks, Anda bisa menggunakan Where:
Kesimpulan:
GORM memberikan kekuatan penuh dalam mengakses dan memanipulasi database, mulai dari operasi sederhana hingga query lanjutan yang kompleks. Meskipun begitu, selalu pastikan untuk memahami efek dari query yang Anda jalankan, terutama dalam hal kinerja dan keamanan.
Last updated