Modeller ve AutoMigrate
Şemayı tanımlayın ve geçişini yapın
Modeller ve AutoMigrate, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.
GORM Nedir
GORM, Go için en popüler ORM'dir. Go yapılarını veritabanı tablolarıyla eşleyerek ham SQL yerine nesnelerle çalışmanızı sağlar. PostgreSQL, MySQL, SQLite ve daha fazlasını destekler.
- Yapıdan tabloya eşleme
- Otomatik geçişler
- İlişkiler ve kancalar
Model Tanımlama
Model, bir Go yapısıdır. Dışa aktarılan her alan bir sütuna dönüşür. gorm.Model gömmek, ID, CreatedAt, UpdatedAt ve DeletedAt alanlarını ekler.
type User struct {
gorm.Model
Name string
Email string
Age int
}Alan Etiketleri
Yapı etiketleri sütunları özelleştirir. gorm etiketiyle boyut, benzersizlik, dizinler ve varsayılan değerler belirleyebilirsiniz. Etiket, alan türünün ardından ters tırnak içinde yazılır; örneğin 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
}Adlandırma Kuralları
GORM varsayılan olarak adları çoğullaştırır ve snake_case biçimine dönüştürür: User yapısı users tablosuyla, CreatedAt alanı da created_at sütunuyla eşleşir. Bu davranışı geçersiz kılabilirsiniz.
GORM ile Açma
gorm.Open, veritabanınız için bir diyalekt alır ve bir *gorm.DB döndürür. Bu tanıtıcı, bağlantı havuzunu sarmalar.
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
if err != nil {
log.Fatal(err)
}AutoMigrate
AutoMigrate, yapılarınıza uyması için tabloları, eksik sütunları ve dizinleri oluşturur. Eklemeli çalışır: sütunları silmez veya türleri yıkıcı biçimde değiştirmez.
db.AutoMigrate(&User{}, &Product{})AutoMigrate Ne Yapmaz
AutoMigrate, veri kaybını önlemek için kullanılmayan sütunları hiçbir zaman silmez veya türlerin boyutunu küçültmez. Yeniden adlandırma, silme veya tür değişiklikleri için açık geçiş araçlarına ihtiyacınız vardır.
Çalıştırılabilir Model Eşleme Benzetimi
GORM gerçek bir veritabanı sürücüsüne ihtiyaç duyar; bu nedenle çalıştırılabilir örnek, AutoMigrate'in gerçekleştirdiği snake_case tablo ve sütun eşlemesini benzetir.
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 Alanı
Modeliniz gorm.Model gömüyorsa veya bir gorm.DeletedAt alanına sahipse GORM mantıksal silmeyi etkinleştirir. Silinen satırlara zaman damgası eklenir ve satırlar kaldırılmak yerine sorgulamalarda gizlenir.
Özel Tablo Adları
Varsayılanı geçersiz kılmak için model üzerinde bir TableName yöntemi uygulayın. Bu, şemanız GORM kurallarıyla eşleşmeyen adlar kullandığında yararlıdır.
func (User) TableName() string {
return "app_users"
}Harici Paket Notu
GORM ve diyalektleri standart kütüphanenin dışında bulunur; bu nedenle go get gorm.io/gorm ve gorm.io/driver/postgres gibi bir sürücü gerekir. Buradaki GORM parçacıkları açıklama amaçlıdır.
Hızlı Kontrol
Modeller hakkındaki bilginizi sınayın.
Özet
Modelleri ve AutoMigrate'i öğrendiniz:
- Yapılar tablolara eşlenir; gorm.Model ID ve zaman damgalarını ekler
- Etiketler birincil anahtarları, dizinleri ve kısıtlamaları belirler
- Varsayılan adlandırma, çoğullaştırılmış snake_case biçimindedir
- AutoMigrate eklemelidir ve hiçbir zaman yıkıcı değildir
- DeletedAt mantıksal silmeyi etkinleştirir
Sıkça Sorulan Sorular
“Modeller ve AutoMigrate” dersi ücretsiz mi?
Evet — “Modeller ve AutoMigrate” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.
“Modeller ve AutoMigrate” dersinde ne öğreneceğim?
Şemayı tanımlayın ve geçişini yapın Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Go Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Modeller ve AutoMigrate” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Modeller ve AutoMigrate
- CRUD İşlemleri
- İlişkilendirmeler
- Kancalar ve Kapsamlar