kodhe / database
Kodhe Database - Query Builder, ORM & Drivers
1.1.0
2026-09-28 18:12 UTC
Requires
- php: >=8.1
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is not auto-updated.
Last update: 2026-09-29 21:08:37 UTC
README
Package database hasil refaktor sistem database CodeIgniter 3: koneksi multi-driver, query builder fluent, ORM berbasis Model, dan migrasi. Namespace PSR-4: Kodhe\Framework\Database\.
Sub-komponen:
DB— facade statis (DB::table(),DB::model(), transaksi, raw query)Builder— fluent query builder (where,join,orderBy,paginate, dst.)ORM\Model/Model— active-record style model + relasi diORM/RelationshipsConnection\—ConnectionManagerdan driver per engine (MySQL, PostgreSQL, SQLite, dll.)Migrations\— skema migrasi versioned
Instalasi
composer require kodhe/database
Persyaratan: PHP >= 8.1 + ekstensi PDO/driver terkait (ext-pdo_mysql, ext-pdo_pgsql, ext-pdo_sqlite).
Quick Start
<?php declare(strict_types=1); require __DIR__ . '/vendor/autoload.php'; use Kodhe\Framework\Database\DB; // Query builder via facade statis $users = DB::table('users') ->where('active', 1) ->orderBy('name', 'asc') ->take(10) ->get(); foreach ($users as $u) { echo $u->name . PHP_EOL; }
Penggunaan
1. Query Builder
$rows = DB::table('orders') ->select(['id', 'total']) ->whereBetween('created_at', ['2026-01-01', '2026-12-31']) ->whereIn('status', ['paid', 'shipped']) ->orWhere('express', true) ->paginate(perPage: 20, page: 2);
Method utama Builder: where, orWhere, whereIn, whereNotIn, whereNull, whereNotNull, whereBetween, whereLike, select, join, leftJoin, rightJoin, orderBy, groupBy, having, take, skip, with, get, first, count, paginate.
2. Model (Active Record)
use Kodhe\Framework\Database\Model; class Product extends Model { // Nama tabel default diturunkan dari nama class (Product -> products) } $produk = Product::find(1); $semuaBaru = Product::where('stock', '>', 0)->get();
3. Transaksi
DB::beginTransaction(); try { DB::table('accounts')->where('id', 1)->update(...); DB::table('accounts')->where('id', 2)->update(...); DB::commit(); } catch (\Throwable $e) { DB::rollback(); throw $e; }
4. Raw query dengan binding
$result = DB::raw('SELECT * FROM logs WHERE level = ? AND created_at > ?', ['error', '2026-01-01']);
Struktur Direktori
src/
├── DB.php # Facade statis
├── Builder.php # Fluent query builder
├── Model.php # Model modern (extends ORM\LegacyModel)
├── Loader.php # Loader konfigurasi/koneksi CI3-compatible
├── Connection/ # ConnectionInterface, ConnectionManager, Drivers/
├── ORM/ # Model, LegacyModel, CI_Model, Relationships/, README.md
└── Migrations/ # Kelas migrasi & schema
Kompatibilitas CodeIgniter 3
$this->db->get('table')gaya lama tetap dilayani lewatLoader/CI_Modelshim diORM/.- Konfigurasi connection memakai array key CI3 (
hostname,username,database,dbdriver, dst.).
Catatan & Batasan
- Contoh query di atas mengasumsikan koneksi aktif telah dikonfigurasi melalui
ConnectionManager/Loader; lihatdatabase/src/Connection/Driversuntuk engine yang didukung. - Dokumen lama di
doc/database_README.mdmerangkum versi awal; file ini adalah rujukan utama package.
Pengujian
cd database && composer install && vendor/bin/phpunit
Lisensi
MIT. Lihat LICENSE.