Go Academy · Pelajaran

Model dan AutoMigrate

Takrifkan dan migrasikan skema

Pelajaran 1 daripada 413 langkah

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
Percuma untuk bermula

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

  1. Model dan AutoMigrate
  2. Operasi CRUD
  3. Perkaitan
  4. Hook dan Skop
← Kembali ke Go Academy