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 VaporModel 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: IntEksiksiz 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:
@IDve@Fieldözellik sarmalayıcılarına ve birschema'ya sahip birfinal classModeltanımlayın.AsyncMigrationile tablolar oluşturun ve bunlarıautoMigrate()ile çalıştırın.save,query(on:),find,updatevedeleteile CRUD işlemleri yapın.- Model ilişkilerini
@Parent,@Childve@Siblingsile tanımlayın;.witharacı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
- Yönlendirme ve İstek İşleme
- İçerik ve JSON Kodlama
- Fluent ORM ve Modeller
- Ara Katman Yazılımı ve Kimlik Doğrulama