GoDasturchi
AutoMigrate Deep Dive

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.

example.go
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

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.

example.go
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