การดำเนินการ CRUD
สร้าง อ่าน อัปเดต และลบ
การดำเนินการ CRUD เป็นบทเรียน Go Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Go Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
CRUD ด้วย GORM
GORM เปลี่ยนการดำเนินการพื้นฐานสี่อย่าง ได้แก่ Create, อ่าน, Update, Delete ให้เป็นการเรียกเมธอดบน *gorm.DB คุณส่งตัวชี้ไปยังโครงสร้าง แล้ว GORM จะสร้างคำสั่งฐานข้อมูลให้
Create
Create แทรกระเบียน หลังจากทำงานแล้ว GORM จะเติมคีย์หลักและค่าประทับเวลาของโครงสร้างจากฐานข้อมูล
user := User{Name: "Ada", Email: "ada@example.com"}
result := db.Create(&user)
fmt.Println(user.ID, result.RowsAffected)อ่านข้อมูลด้วย First
First ดึงระเบียนแรกที่ตรงกันโดยเรียงตามคีย์หลัก ส่งตัวชี้เพื่อรับผลลัพธ์ และส่งเงื่อนไขเป็นอาร์กิวเมนต์เพิ่มเติม
var user User
db.First(&user, 1) // by primary key
db.First(&user, "email = ?", "ada@example.com")อ่านข้อมูลหลายรายการด้วย Find
Find โหลดหลายแถวลงในสไลซ์ หากไม่มีเงื่อนไขจะส่งคืนทุกแถว และหากใช้ Where ก็จะกรองผลลัพธ์
var users []User
db.Where("age > ?", 18).Find(&users)Update
Save อัปเดตทุกฟิลด์ของระเบียน ส่วน Update และ Updates จะเปลี่ยนเฉพาะคอลัมน์ที่ระบุ จึงหลีกเลี่ยงการเขียนทับฟิลด์ที่คุณไม่ได้ตั้งใจเปลี่ยน
db.Model(&user).Update("name", "Ada L.")
db.Model(&user).Updates(User{Name: "Ada", Age: 36})ข้อควรระวังเรื่องค่าเริ่มต้นของชนิดข้อมูล
เมื่ออัปเดตด้วยโครงสร้าง GORM จะไม่สนใจฟิลด์ที่มีค่าเริ่มต้นของชนิดข้อมูล (0, false, "") หากต้องการอัปเดตคอลัมน์ให้เป็นค่าศูนย์ ให้ส่งแผนที่แทนโครงสร้าง
db.Model(&user).Updates(map[string]interface{}{"age": 0, "active": false})Delete
Delete ลบระเบียน หากแบบจำลองมีฟิลด์ DeletedAt การลบนี้จะเป็นการลบแบบซ่อน โดยกำหนดค่าประทับเวลาแทนการลบแถวออก
db.Delete(&user, 1)การจำลอง CRUD ที่เรียกใช้งานได้
GORM จำเป็นต้องใช้ฐานข้อมูลจริง ดังนั้นตัวอย่างที่เรียกใช้งานได้นี้จึงจำลองการสร้าง อ่าน อัปเดต และลบข้อมูลในสไลซ์ภายในหน่วยความจำ เพื่อแสดงวงจรการทำงาน
package main
import "fmt"
type User struct {
ID int
Name string
}
func main() {
var users []User
next := 1
// Create
u := User{ID: next, Name: "Ada"}
users = append(users, u)
next++
// Read
fmt.Println("read:", users[0])
// Update
users[0].Name = "Ada L."
fmt.Println("updated:", users[0])
// Delete
users = users[:0]
fmt.Println("count after delete:", len(users))
}การตรวจสอบข้อผิดพลาด
การเรียกใช้ GORM ทุกครั้งจะส่งคืนค่า *gorm.DB ซึ่งฟิลด์ Error เก็บข้อผิดพลาดที่เกิดขึ้น ระเบียนที่ไม่พบจะทำให้ gorm.ErrRecordNotFound ถูกส่งคืนเมื่อใช้ First
if err := db.First(&user, 99).Error; err == gorm.ErrRecordNotFound {
fmt.Println("no such user")
}การเรียกเมธอดต่อเนื่องกัน
GORM ใช้ตัวสร้างที่เรียกต่อกันได้: db.Where(...).Order(...).Limit(...).Find(&users) แต่ละเมธอดจะจำกัดคำค้นข้อมูลให้แคบลง และเมธอดสุดท้าย (Find, First) จะดำเนินการคำค้นข้อมูล
การแทรกข้อมูลเป็นชุด
ส่งสไลซ์ให้ Create เพื่อแทรกหลายแถวในคำสั่งเดียว CreateInBatches จะแบ่งสไลซ์ขนาดใหญ่มากออกเป็นกลุ่มย่อย เพื่อให้อยู่ภายในขีดจำกัด
db.Create(&[]User{{Name: "A"}, {Name: "B"}})ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความรู้เกี่ยวกับ CRUD
สรุปทบทวน
คุณได้เรียนรู้เกี่ยวกับการดำเนินการ CRUD ดังนี้:
- Create แทรกข้อมูลและเติมคีย์หลักกลับลงในโครงสร้าง
- First และ Find ใช้อ่านข้อมูลทีละแถวและหลายแถว
- Save, Update และ Updates ใช้แก้ไขข้อมูล ส่วนแผนที่จะบังคับให้ใช้ค่าศูนย์ได้
- Delete จะลบแบบซ่อนเมื่อมี DeletedAt
- ตรวจสอบฟิลด์ Error และเรียกเมธอดต่อเนื่องกันเพื่อสร้างคำค้นข้อมูลที่ซับซ้อน
คำถามที่พบบ่อย
บทเรียน “การดำเนินการ CRUD” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การดำเนินการ CRUD” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Go Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การดำเนินการ CRUD”
สร้าง อ่าน อัปเดต และลบ คุณปฏิบัติ Go Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Go Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Go Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การดำเนินการ CRUD” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Go Academy นี้ได้ไหม
ได้ บทเรียน Go Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- โมเดลและ AutoMigrate
- การดำเนินการ CRUD
- การเชื่อมโยง
- ฮุกและขอบเขต