0Pricing
Go Academy · Ders

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

  1. Modeller ve AutoMigrate
  2. CRUD İşlemleri
  3. İlişkilendirmeler
  4. Kancalar ve Kapsamlar
← Go Academy Sayfasına Dön