Model dan AutoMigrate
Takrifkan dan migrasikan skema
Model dan AutoMigrate ialah pelajaran Go Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Go Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Go Academy merangkumi sejumlah 4 pelajaran.
Apakah GORM
GORM ialah ORM paling popular untuk Go. Ia memetakan struktur Go kepada jadual pangkalan data supaya anda bekerja dengan objek dan bukannya SQL mentah. Ia menyokong PostgreSQL, MySQL, SQLite dan banyak lagi.
- Pemetaan struktur kepada jadual
- Pemindahan automatik
- Perkaitan dan kait
Menentukan Model
Model ialah struktur Go. Setiap medan yang dieksport menjadi lajur. Membenamkan gorm.Model menambah medan ID, CreatedAt, UpdatedAt dan DeletedAt.
type User struct {
gorm.Model
Name string
Email string
Age int
}Teg Medan
Teg struktur menyesuaikan lajur. Anda boleh menetapkan saiz, keunikan, indeks dan nilai lalai dengan teg gorm. Teg ditulis dalam tanda backtick selepas jenis medan, contohnya 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
}Konvensyen Penamaan
GORM menjamakkan dan menggunakan snake_case secara lalai: struktur User dipetakan kepada jadual users, manakala medan CreatedAt dipetakan kepada created_at. Anda boleh mengatasi tetapan ini.
Membuka dengan GORM
gorm.Open menerima dialektor untuk pangkalan data anda dan mengembalikan *gorm.DB. Pemegang ini membungkus kumpulan sambungan.
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
if err != nil {
log.Fatal(err)
}AutoMigrate
AutoMigrate mencipta jadual, lajur yang tiada dan indeks supaya sepadan dengan struktur anda. Operasi ini bersifat tambahan: ia tidak akan menggugurkan lajur atau mengubah jenis secara merosakkan.
db.AutoMigrate(&User{}, &Product{})Perkara yang Tidak Dilakukan oleh AutoMigrate
AutoMigrate tidak pernah memadam lajur yang tidak digunakan atau mengecilkan jenis, bagi mengelakkan kehilangan data. Untuk penamaan semula, pengguguran atau perubahan jenis, anda memerlukan alat pemindahan yang jelas.
Simulasi Pemetaan Model yang Boleh Dijalankan
GORM memerlukan pemacu pangkalan data sebenar, jadi contoh yang boleh dijalankan ini mensimulasikan pemetaan jadual dan lajur snake_case yang dilakukan oleh 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))
}
}Medan DeletedAt
Jika model anda membenamkan gorm.Model atau mempunyai medan gorm.DeletedAt, GORM mendayakan pemadaman lembut. Rekod yang dipadam menerima cap masa dan disembunyikan daripada pertanyaan, bukannya dibuang.
Nama Jadual Tersuai
Laksanakan kaedah TableName pada model untuk mengatasi nilai lalai. Ini berguna apabila skema anda menggunakan nama yang tidak sepadan dengan konvensyen GORM.
func (User) TableName() string {
return "app_users"
}Nota Pakej Luaran
GORM dan dialektornya berada di luar pustaka standard, lalu memerlukan go get gorm.io/gorm dan pemacu seperti gorm.io/driver/postgres. Petikan GORM di sini adalah untuk penerangan.
Semakan Ringkas
Uji pengetahuan anda tentang model.
Ulang Kaji
Anda telah mempelajari model dan AutoMigrate:
- Struktur dipetakan kepada jadual; gorm.Model menambah ID dan cap masa
- Teg menetapkan kunci utama, indeks dan kekangan
- Penamaan lalai menggunakan bentuk jamak dan snake_case
- AutoMigrate bersifat tambahan dan tidak pernah merosakkan data
- DeletedAt mendayakan pemadaman lembut
Pelajari Go dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 51
- Pelajaran
- 203
Soalan Lazim
Adakah pelajaran “Model dan AutoMigrate” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Go Academy, termasuk “Model dan AutoMigrate”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Go Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Model dan AutoMigrate”?
Takrifkan dan migrasikan skema Anda berlatih Go Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Go Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Go Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Model dan AutoMigrate” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Go Academy ini?
Ya. Setiap pelajaran Go Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Model dan AutoMigrate
- Operasi CRUD
- Perkaitan
- Hook dan Skop