0Pricing
Go Academy · บทเรียน

การดำเนินการ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. โมเดลและ AutoMigrate
  2. การดำเนินการ CRUD
  3. การเชื่อมโยง
  4. ฮุกและขอบเขต
← กลับไปที่ Go Academy