AutoMigrate Deep Dive
AutoMigrate'ga chuqur nazar
Modelni e'lon qilish — hali jadval yaratmaydi. db.AutoMigrate(&Model{}) chaqirilganda, GORM modelni tekshirib, jadvalni yo'q bo'lsa yaratadi, mavjud bo'lsa esa yetishmayotgan ustunlarni qo'shadi.
type Product struct {
ID uint
Name string
Price int
}
func main() {
db, _ := gorm.Open(sqlite.Open("shop.db"), &gorm.Config{})
if err := db.AutoMigrate(&Product{}); err != nil {
log.Fatal("migratsiya xatosi:", err)
}
// Endi "products" jadvali mavjud, kerakli ustunlar bilan
}AutoMigrate xavfsiz — u mavjud ma'lumotni o'chirmaydi, faqat yetishmayotgan jadval/ustun/indeksni qo'shadi (ustunni o'chirish yoki turini o'zgartirish kabi "xavfli" o'zgarishlarni bajarmaydi). Bir nechta modelni bir chaqiruvda migratsiya qilish mumkin: db.AutoMigrate(&User{}, &Product{}, &Order{}). Katta production loyihalarda ko'pincha AutoMigrate o'rniga alohida "migratsiya fayllari" ishlatiladi (aniqroq nazorat uchun), lekin kichik loyihalar va prototiplar uchun AutoMigrate juda qulay.
Key Takeaway
Key Takeaway:
db.AutoMigrate(&Model{}) model asosida jadvalni yaratadi/yangilaydi, mavjud ma'lumotni xavfsiz saqlab qoladi.
NEXT UP
Create Records