0Pricing
Swift Academy · Ders

Fluent ORM ve Modeller

Vapor'un Fluent ORM'i ile verileri kalıcı hâle getirin.

Fluent ORM ve Modeller, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 3. 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, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 4 dersten oluşur.

Fluent Nedir?

Fluent, Vapor'ın ORM'sidir. Swift sınıflarını veritabanı satırlarına eşler ve tek bir API üzerinden PostgreSQL, MySQL, SQLite ve MongoDB desteği sunar. Siz Swift yazarsınız; Fluent SQL yazar.

import Fluent
import Vapor

Model Tanımlama

Fluent modeli, Model protokolüne ve genellikle Content protokolüne uyan bir final class sınıfıdır. Bir schema (tablo adı) ve birincil anahtar için @ID özelliği tanımlar.

final class Planet: Model, Content {
    static let schema = "planets"

    @ID(key: .id)
    var id: UUID?

    init() {}
}

@Field Özellik Sarmalayıcısı

Depolanan bir sütunu @Field ile eşleyin. Anahtar, veritabanı sütununun adıdır. Kalıcı olmasını istediğiniz her sütun için bir özellik ekleyin.

@Field(key: "name")
var name: String

@Field(key: "diameter_km")
var diameterKm: Int

Eksiksiz Bir Model

Modellerin, kod içinde örnekler oluşturabilmeniz için gerekli boş init() yöntemine ek olarak üye bazlı bir başlatıcıya da ihtiyacı vardır.

final class Planet: Model, Content {
    static let schema = "planets"
    @ID(key: .id) var id: UUID?
    @Field(key: "name") var name: String
    init() {}
    init(id: UUID? = nil, name: String) {
        self.id = id
        self.name = name
    }
}

Veritabanı Değişiklikleri

Bir veritabanı değişikliği, veritabanı şemasını oluşturur veya değiştirir. AsyncMigration protokolüne uyar ve prepare (uygulama) ile revert (geri alma) yöntemlerini uygular.

struct CreatePlanet: AsyncMigration {
    func prepare(on db: Database) async throws {
        try await db.schema("planets")
            .id()
            .field("name", .string, .required)
            .create()
    }
    func revert(on db: Database) async throws {
        try await db.schema("planets").delete()
    }
}

Veritabanı Değişikliklerini Kaydetme

Veritabanı değişikliklerini yapılandırmanızda app.migrations içine ekleyin, ardından bunları app.autoMigrate() veya migrate komutuyla çalıştırın.

app.migrations.add(CreatePlanet())
try await app.autoMigrate()

Kayıt Kaydetme

Bir model örneği oluşturun ve isteğin veritabanıyla birlikte save(on:) çağrısını yapın. Fluent bir INSERT işlemi gerçekleştirir ve oluşturulan kimliği doldurur.

app.post("planets") { req async throws -> Planet in
    let planet = try req.content.decode(Planet.self)
    try await planet.save(on: req.db)
    return planet
}

Kayıtları Sorgulama

Sorguları akıcı bir biçimde oluşturmak için Model.query(on:) kullanın. .all() her satırı döndürür; gerektiğinde filtreleri ve sıralamaları birbirine ekleyin.

app.get("planets") { req async throws -> [Planet] in
    try await Planet.query(on: req.db).all()
}

Kimliğe Göre Filtreleme ve Bulma

find(_:on:), birincil anahtara göre kayıt getirir ve isteğe bağlı bir değer döndürür. filter, sütun değerlerine göre sonuçları daraltır.

let earth = try await Planet.query(on: req.db)
    .filter(\.$name == "Earth")
    .first()

let byId = try await Planet.find(someUUID, on: req.db)

Güncelleme ve Silme

Getirilen bir modelin özelliklerini değiştirip update(on:) çağrısını yapın veya delete(on:) ile modeli kaldırın. Her iki işlem de veritabanına karşı eşzamansız olarak yürütülür.

if let planet = try await Planet.find(id, on: req.db) {
    planet.name = "Renamed"
    try await planet.update(on: req.db)
    // or: try await planet.delete(on: req.db)
}

İlişkiler

Fluent, model ilişkilerini özellik sarmalayıcılarıyla tanımlar: bire bir/bire çok ilişkiler için @Parent ve @Child, çoka çok ilişkiler için @Siblings kullanılır. Bunlar yabancı anahtarları tanımlar ve .with(...) ile önceden yüklemeyi etkinleştirir.

@Parent(key: "star_id")
var star: Star

// query eagerly loading the parent
Planet.query(on: req.db).with(\.$star).all()

Kısa Kontrol: Fluent

ORM anlayışınızı sınayın.

Özet: Fluent ORM ve Modeller

Artık Fluent ile verileri kalıcı olarak saklayabilirsiniz:

  • @ID ve @Field özellik sarmalayıcılarına ve bir schema'ya sahip bir final class Model tanımlayın.
  • AsyncMigration ile tablolar oluşturun ve bunları autoMigrate() ile çalıştırın.
  • save, query(on:), find, update ve delete ile CRUD işlemleri yapın.
  • Model ilişkilerini @Parent, @Child ve @Siblings ile tanımlayın; .with aracılığıyla önceden yükleyin.

Sıkça Sorulan Sorular

“Fluent ORM ve Modeller” dersi ücretsiz mi?

Evet — “Fluent ORM ve Modeller” 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 Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 4 dersten oluşur.

“Fluent ORM ve Modeller” dersinde ne öğreneceğim?

Vapor'un Fluent ORM'i ile verileri kalıcı hâle getirin. Swift 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.

Swift Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Swift 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 3. dersidir.

“Fluent ORM ve Modeller” 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 Swift Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Swift 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. Yönlendirme ve İstek İşleme
  2. İçerik ve JSON Kodlama
  3. Fluent ORM ve Modeller
  4. Ara Katman Yazılımı ve Kimlik Doğrulama
← Swift Academy Sayfasına Dön