โมเดลและ AutoMigrate
กำหนดและย้ายโครงสร้าง
โมเดลและ AutoMigrate เป็นบทเรียน Go Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Go Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
GORM คืออะไร
GORM เป็นตัวจัดการความสัมพันธ์ระหว่างวัตถุที่ได้รับความนิยมมากที่สุดสำหรับ Go โดยจับคู่โครงสร้าง Go กับตารางฐานข้อมูล เพื่อให้คุณทำงานกับวัตถุแทนคำสั่งฐานข้อมูลดิบ รองรับ PostgreSQL, MySQL, SQLite และอื่น ๆ
- การจับคู่โครงสร้างกับตาราง
- การย้ายโครงสร้างฐานข้อมูลอัตโนมัติ
- ความสัมพันธ์และฮุก
การกำหนดแบบจำลอง
แบบจำลองคือโครงสร้าง Go แต่ละฟิลด์ที่ส่งออกจะกลายเป็นคอลัมน์ การฝัง gorm.Model จะเพิ่มฟิลด์ ID, CreatedAt, UpdatedAt และ DeletedAt
type User struct {
gorm.Model
Name string
Email string
Age int
}แท็กของฟิลด์
แท็กของโครงสร้างใช้ปรับแต่งคอลัมน์ คุณสามารถกำหนดขนาด ความไม่ซ้ำ ดัชนี และค่าเริ่มต้นด้วยแท็ก gorm แท็กจะเขียนอยู่ในเครื่องหมายแบ็กทิกหลังชนิดของฟิลด์ เช่น gorm:"uniqueIndex;size:255"
type User struct {
// ID uint tag: gorm:"primaryKey"
// Email string tag: gorm:"uniqueIndex;size:255"
// Name string tag: gorm:"not null"
ID uint
Email string
Name string
}หลักเกณฑ์การตั้งชื่อ
โดยค่าเริ่มต้น GORM จะเปลี่ยนชื่อเป็นพหูพจน์และรูปแบบขีดล่าง: โครงสร้าง User จะจับคู่กับตาราง users และฟิลด์ CreatedAt จะจับคู่กับ created_at คุณสามารถกำหนดทับค่าเหล่านี้ได้
เปิดฐานข้อมูลด้วย GORM
gorm.Open รับตัวแปลงภาษาสำหรับฐานข้อมูลของคุณและส่งคืนค่า *gorm.DB ตัวจัดการนี้ครอบกลุ่มการเชื่อมต่อไว้
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
if err != nil {
log.Fatal(err)
}AutoMigrate
AutoMigrate สร้างตาราง คอลัมน์ที่ขาดหายไป และดัชนีให้ตรงกับโครงสร้างของคุณ การทำงานนี้เป็นการเพิ่มเท่านั้น จะไม่ลบคอลัมน์หรือเปลี่ยนชนิดข้อมูลในลักษณะที่ทำลายข้อมูล
db.AutoMigrate(&User{}, &Product{})สิ่งที่ AutoMigrate ไม่ทำ
AutoMigrate จะไม่ลบคอลัมน์ที่ไม่ได้ใช้งานหรือลดขนาดชนิดข้อมูล เพื่อหลีกเลี่ยงการสูญเสียข้อมูล หากต้องการเปลี่ยนชื่อ ลบ หรือเปลี่ยนชนิดข้อมูล คุณต้องใช้เครื่องมือย้ายโครงสร้างฐานข้อมูลโดยเฉพาะ
การจำลองการจับคู่แบบจำลองที่เรียกใช้งานได้
GORM จำเป็นต้องใช้โปรแกรมควบคุมฐานข้อมูลจริง ดังนั้นตัวอย่างที่เรียกใช้งานได้นี้จึงจำลองการจับคู่ชื่อตารางและคอลัมน์ในรูปแบบขีดล่างที่ AutoMigrate ดำเนินการ
package main
import (
"fmt"
"strings"
)
func toSnake(s string) string {
var b strings.Builder
for i, r := range s {
if i > 0 && r >= 65 && r <= 90 {
b.WriteByte(95)
}
if r >= 65 && r <= 90 {
r = r + 32
}
b.WriteRune(r)
}
return b.String()
}
func main() {
model := "User"
fields := []string{"ID", "Name", "CreatedAt"}
fmt.Println("table:", toSnake(model)+"s")
for _, f := range fields {
fmt.Println("column:", toSnake(f))
}
}ฟิลด์ DeletedAt
หากแบบจำลองของคุณฝัง gorm.Model หรือมีฟิลด์ gorm.DeletedAt GORM จะเปิดใช้ การลบแบบซ่อน แถวที่ถูกลบจะได้รับค่าประทับเวลาและถูกซ่อนจากคำค้นข้อมูล แทนที่จะถูกลบออก
ชื่อ ตารางที่กำหนดเอง
ใช้งานเมธอด TableName กับแบบจำลองเพื่อแทนที่ค่าเริ่มต้น วิธีนี้มีประโยชน์เมื่อแบบแผนฐานข้อมูลของคุณใช้ชื่อที่ไม่ตรงกับหลักเกณฑ์ของ GORM
func (User) TableName() string {
return "app_users"
}หมายเหตุเกี่ยวกับแพ็กเกจภายนอก
GORM และตัวแปลงภาษาของ GORM อยู่นอกไลบรารีมาตรฐาน จึงต้องใช้ go get gorm.io/gorm และโปรแกรมควบคุมอย่าง gorm.io/driver/postgres ตัวอย่างโค้ด GORM ในที่นี้มีไว้เพื่อประกอบคำอธิบาย
ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความรู้เกี่ยวกับแบบจำลอง
สรุปทบทวน
คุณได้เรียนรู้เกี่ยวกับแบบจำลองและ AutoMigrate ดังนี้:
- โครงสร้างจับคู่กับตาราง และ gorm.Model จะเพิ่ม ID กับค่าประทับเวลา
- แท็กใช้กำหนดคีย์หลัก ดัชนี และข้อจำกัด
- การตั้งชื่อเริ่มต้นจะเป็นรูปพหูพจน์และขีดล่าง
- AutoMigrate เป็นการเพิ่มเท่านั้นและไม่ทำลายข้อมูล
- DeletedAt เปิดใช้การลบแบบซ่อน
คำถามที่พบบ่อย
บทเรียน “โมเดลและ AutoMigrate” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “โมเดลและ AutoMigrate” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Go Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “โมเดลและ AutoMigrate”
กำหนดและย้ายโครงสร้าง คุณปฏิบัติ Go Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Go Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Go Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “โมเดลและ AutoMigrate” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Go Academy นี้ได้ไหม
ได้ บทเรียน Go Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- โมเดลและ AutoMigrate
- การดำเนินการ CRUD
- การเชื่อมโยง
- ฮุกและขอบเขต