Nxdom Framework

Nusantara eXtreme Development Object Model — dokumentasi resmi

Storages

Koneksi database lewat NexaDb, query aman lewat NexaModel - pilih tabel dengan Storage() / table(), rantai where, orderBy, get / first.

NexaModel · Storage() · NexaDb

$this->Storage('news')->where()->first();

Alur baca backend

ModelsStorages (halaman ini) → Pengantar (seri bab).

Apa yang dimaksud storage di sini

Di Nexa Dom, storage mengacu pada penyimpanan data di database yang diakses lewat lapisan App\System\Storage\NexaDb (singleton PDO) dan NexaModel. Saat useModels() memanggil method pada model, framework menginstansiasi model tersebut; konstruktor NexaModel mengambil koneksi dari NexaDb::getInstance()->getConnection() — Anda tidak perlu menulis new PDO di controller.

Referensi mendalam: Pengantar dan bab berikutnya (query builder, CRUD, agregasi, pagination). Halaman ini fokus ke contoh standar Exasmple dan pola Storage().
Tahap Keterangan
.env DB_HOST, DB_USERNAME, DB_PASSWORD, DB_DATABASE, DB_PORT, DB_CHARSET — wajib konsisten dengan server MySQL/MariaDB Anda.
NexaDb Singleton koneksi; dipakai internal oleh NexaModel.
Storage($tabel) Menetapkan tabel untuk rantai query (alias method table()).
Controller Tetap memanggil model lewat useModels('Exasmple', 'newsById', [$id]); detail alur view ada di Models.

Konfigurasi database

Selaras dengan bagian instalasi di Getting Started dan Instalasi dan Konfigurasi (bab Storages):

1

Variabel lingkungan

DB_HOST=localhost DB_USERNAME=root DB_PASSWORD= DB_DATABASE=nexa_db DB_PORT=3306 DB_CHARSET=utf8mb4

Menentukan tabel: Storage() dan table()

Menurut API di NexaModel, Storage('nama_tabel') dan table('nama_tabel') sama: mengatur tabel aktif untuk query berantai (select, where, get, first, insert, dll.). Nama tabel divalidasi (alphanumeric, underscore, titik).

2

Rantai query

$rows = $this->Storage('news') ->where('status', 'published') ->orderBy('id', 'DESC') ->limit(10) ->get(); $one = $this->Storage('news')->where('id', 1)->first();

Contoh standar — models/Exasmple.php

File ini memuat dua pola: method data() tanpa DB (untuk demo blok view), dan method yang memakai Storage('news') untuk baca tabel news. Pastikan tabel tersebut ada di database Anda (buat lewat migrasi atau SQL manual).

3

Exasmple — cuplikan

public function newsById(int $id): ?array { if ($id < 1) { return null; } return $this->Storage('news')->where('id', '=', $id)->first(); } public function latestNews(int $limit = 5): array { return $this->Storage('news') ->orderBy('id', 'DESC') ->limit($limit) ->get(); }

Untuk memanggil dari controller: $this->useModels('Exasmple', 'newsById', [1]); atau 'latestNews', [5].

ExampleController.php — pola yang sama

Contoh lengkap halaman /example (method data() + nexaBlock tanpa query DB wajib) ada di Models (bagian 3.2). Di bawah ini pola terpisah untuk membaca tabel lewat newsById — tetap memakai useModels('Exasmple', 'newsById', [1]) atau model produksi seperti News::findById:

4

Cuplikan di index()

$news = $this->useModels('Exasmple', 'newsById', [1]); $this->assignVars(['news' => $news]);

Atau gabungkan ke array nexaBlock seperti pada contoh blok food di Models.

Dari model ke view

Hasil array dari newsById / latestNews dapat Anda gabung ke assignVars atau nexaBlock seperti di halaman Models & blok view. Query builder lengkap, transaksi, dan helper lain ada di Query Builder dan bab terkait di dokumentasi Storages.

Lanjut

Topik sebelumnya: Models — useModels & nexaBlock. Topik berikutnya: Pengantar (awal seri bab Storages). Lihat juga Models, Events, Helper & template, daftar dokumentasi.