GoDasturchi
Delete Records

Delete Records

Yozuvlarni o'chirish

db.Delete(&model, id) yozuvni o'chiradi — lekin GORM'da bu odatda "yumshoq o'chirish" (soft delete): yozuv haqiqatan o'chirilmaydi, faqat "o'chirilgan" deb belgilanadi.

example.go
import "gorm.io/gorm"

type User struct {
	ID        uint
	Name      string
	DeletedAt gorm.DeletedAt `gorm:"index"` // bu maydon "yumshoq o'chirish"ni yoqadi
}

func main() {
	// ...
	db.Delete(&User{}, 1) // haqiqatan o'chirmaydi, DeletedAt'ni to'ldiradi

	var users []User
	db.Find(&users) // o'chirilgan yozuvlar AVTOMATIK chiqarib tashlanadi

	var allUsers []User
	db.Unscoped().Find(&allUsers) // o'chirilganlarni ham ko'rsatadi

	db.Unscoped().Delete(&User{}, 1) // HAQIQATAN, butunlay o'chiradi
}

Model'da DeletedAt gorm.DeletedAt maydoni bo'lsa, Delete chaqirilganda GORM qatorni o'chirmaydi, faqat shu maydonga vaqtni yozadi — va shu vaqtdan boshlab oddiy Find/First bu qatorni avtomatik yashiradi. Bu — xatolik bilan o'chirilgan ma'lumotni tiklash imkonini beradi. Unscoped() — "yumshoq o'chirish filtri ishlatilmasin" degan ma'noni bildiradi, uni haqiqatan butunlay o'chirish yoki o'chirilganlarni ham ko'rish uchun ishlatasiz.

Key Takeaway

Key Takeaway:

gorm.DeletedAt maydoni bilan GORM "yumshoq o'chirish"ni avtomatik ta'minlaydi; Unscoped() bu himoyani vaqtincha chetlab o'tadi.

NEXT UP

Relationships: Belongs To

Delete Records

Yozuvlarni o'chirish

db.Delete(&model, id) yozuvni o'chiradi — lekin GORM'da bu odatda "yumshoq o'chirish" (soft delete): yozuv haqiqatan o'chirilmaydi, faqat "o'chirilgan" deb belgilanadi.

example.go
import "gorm.io/gorm"

type User struct {
	ID        uint
	Name      string
	DeletedAt gorm.DeletedAt `gorm:"index"` // bu maydon "yumshoq o'chirish"ni yoqadi
}

func main() {
	// ...
	db.Delete(&User{}, 1) // haqiqatan o'chirmaydi, DeletedAt'ni to'ldiradi

	var users []User
	db.Find(&users) // o'chirilgan yozuvlar AVTOMATIK chiqarib tashlanadi

	var allUsers []User
	db.Unscoped().Find(&allUsers) // o'chirilganlarni ham ko'rsatadi

	db.Unscoped().Delete(&User{}, 1) // HAQIQATAN, butunlay o'chiradi
}

Model'da DeletedAt gorm.DeletedAt maydoni bo'lsa, Delete chaqirilganda GORM qatorni o'chirmaydi, faqat shu maydonga vaqtni yozadi — va shu vaqtdan boshlab oddiy Find/First bu qatorni avtomatik yashiradi. Bu — xatolik bilan o'chirilgan ma'lumotni tiklash imkonini beradi. Unscoped() — "yumshoq o'chirish filtri ishlatilmasin" degan ma'noni bildiradi, uni haqiqatan butunlay o'chirish yoki o'chirilganlarni ham ko'rish uchun ishlatasiz.

Key Takeaway

Key Takeaway:

gorm.DeletedAt maydoni bilan GORM "yumshoq o'chirish"ni avtomatik ta'minlaydi; Unscoped() bu himoyani vaqtincha chetlab o'tadi.

NEXT UP

Relationships: Belongs To