ORM Fluent dan Model
Simpan data dengan ORM Fluent milik Vapor.
ORM Fluent dan Model adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Swift Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Swift Academy mencakup 4 pelajaran total.
Apa Itu Fluent?
Fluent adalah ORM milik Vapor. Fluent memetakan kelas Swift ke baris basis data dan mendukung PostgreSQL, MySQL, SQLite, serta MongoDB melalui satu API. Anda menulis Swift; Fluent menulis SQL.
import Fluent
import VaporMendefinisikan Model
Model Fluent adalah final class yang mengikuti Model dan biasanya Content. Model ini mendeklarasikan schema (nama tabel) dan properti @ID untuk kunci utama.
final class Planet: Model, Content {
static let schema = "planets"
@ID(key: .id)
var id: UUID?
init() {}
}Pembungkus Properti @Field
Petakan kolom yang disimpan dengan @Field. Kunci tersebut adalah nama kolom basis data. Tambahkan satu properti untuk setiap kolom yang ingin Anda pertahankan.
@Field(key: "name")
var name: String
@Field(key: "diameter_km")
var diameterKm: IntModel Lengkap
Model juga memerlukan penginisialisasi memberwise (selain init() kosong yang diwajibkan) agar Anda dapat membuat instance dalam kode.
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
}
}Migrasi
Migrasi membuat atau mengubah skema basis data. Migrasi mengikuti AsyncMigration dan mengimplementasikan prepare (menerapkan) serta revert (membatalkan).
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()
}
}Mendaftarkan Migrasi
Tambahkan migrasi ke app.migrations dalam konfigurasi Anda, lalu jalankan dengan app.autoMigrate() atau perintah migrate.
app.migrations.add(CreatePlanet())
try await app.autoMigrate()Menyimpan Rekaman
Buat instance model dan panggil save(on:) dengan basis data dari permintaan. Fluent menjalankan INSERT dan mengisi id yang dibuat secara otomatis.
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
}Mengueri Rekaman
Gunakan Model.query(on:) untuk membangun kueri secara lancar. .all() mengembalikan setiap baris; rangkai penyaring dan pengurutan sesuai kebutuhan.
app.get("planets") { req async throws -> [Planet] in
try await Planet.query(on: req.db).all()
}Menyaring dan Menemukan Berdasarkan ID
find(_:on:) mengambil data berdasarkan kunci utama dan mengembalikan nilai opsional. filter mempersempit hasil berdasarkan nilai kolom.
let earth = try await Planet.query(on: req.db)
.filter(\.$name == "Earth")
.first()
let byId = try await Planet.find(someUUID, on: req.db)Memperbarui dan Menghapus
Ubah properti model yang telah diambil lalu panggil update(on:), atau hapus model tersebut dengan delete(on:). Keduanya berjalan secara asinkron terhadap basis data.
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)
}Relasi
Fluent memodelkan relasi dengan pembungkus properti: @Parent dan @Child untuk relasi satu-ke-satu/satu-ke-banyak, serta @Siblings untuk banyak-ke-banyak. Pembungkus tersebut mendefinisikan kunci asing dan memungkinkan pemuatan awal dengan .with(...).
@Parent(key: "star_id")
var star: Star
// query eagerly loading the parent
Planet.query(on: req.db).with(\.$star).all()Uji Cepat: Fluent
Uji pemahaman ORM Anda.
Ringkasan: ORM dan Model Fluent
Sekarang Anda dapat mempertahankan data dengan Fluent:
- Definisikan
final classModeldengan pembungkus properti@IDdan@Field, sertaschema. - Buat tabel melalui
AsyncMigrationdan jalankan denganautoMigrate(). - Lakukan CRUD dengan
save,query(on:),find,update, dandelete. - Modelkan relasi dengan
@Parent,@Child, dan@Siblings, lalu lakukan pemuatan awal melalui.with.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “ORM Fluent dan Model” gratis?
Ya — teks lengkap “ORM Fluent dan Model” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Swift Academy, upgrade ke CoddyKit PRO. Kursus Swift Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “ORM Fluent dan Model”?
Simpan data dengan ORM Fluent milik Vapor. Kamu berlatih Swift Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Swift Academy?
Tidak diperlukan pengalaman sebelumnya. Swift Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “ORM Fluent dan Model” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Swift Academy ini?
Ya. Setiap pelajaran Swift Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Perutean dan Penanganan Permintaan
- Pengodean Konten dan JSON
- ORM Fluent dan Model
- Middleware dan Autentikasi