georgeff / database
A fluent query builder and database abstraction layer with read replica and transaction support.
1.0.0
2026-03-05 07:18 UTC
Requires
- php: ^8.4
- aura/sql: ^6.0
- aura/sqlquery: ^3.0
Requires (Dev)
- phpstan/phpstan: ^2.0
- phpunit/phpunit: ^11.0
- squizlabs/php_codesniffer: ^3.11
README
A database library built on top of aura/sql and aura/sqlquery that provides driver configuration, lazy connection management, a fluent query builder, and a clean execution layer.
Installation
composer require georgeff/database
Quick Start
use Georgeff\Database\Connection\MySqlDriver; use Georgeff\Database\Connection\ConnectionManager; use Georgeff\Database\DatabaseManager; $driver = MySqlDriver::fromArray([ 'hosts' => ['write' => 'db.example.com'], 'database' => 'myapp', 'username' => 'root', 'password' => 'secret', ]); $db = new DatabaseManager(new ConnectionManager($driver)); // Fetch a single row $user = $db->fetchOne( $db->select()->from('users')->where('id', 1) ); // Fetch all rows $users = $db->fetchAll( $db->select(['id', 'name'])->from('users')->where('active', 1)->orderBy('name', 'ASC') ); // Fetch key-value pairs (first column as key, second as value) $nameById = $db->fetchPairs( $db->select(['id', 'name'])->from('users')->where('active', 1) ); // Count matching rows $total = $db->count( $db->select()->from('users')->where('active', 1) ); // Insert a row and retrieve the generated ID $db->fetchAffected( $db->insert()->into('users')->column('name', 'Alice')->column('email', 'alice@example.com') ); $id = $db->lastInsertId(); // Update rows $db->fetchAffected( $db->update()->table('users')->column('active', 0)->where('last_login', '2020-01-01', '<') ); // Delete rows $db->fetchAffected( $db->delete()->from('users')->where('active', 0) ); // Transaction $db->transaction(function () use ($db) { $db->fetchAffected($db->update()->table('accounts')->column('balance', 500)->where('id', 1)); $db->fetchAffected($db->update()->table('accounts')->column('balance', 1500)->where('id', 2)); });
Documentation
- Drivers — Configuring SQLite, MySQL, and PostgreSQL connections
- Connection Manager — Lazy connections, read replicas, and sticky writes
- Query Builder — Building SELECT, INSERT, UPDATE, and DELETE queries
- Transactions — Wrapping operations in database transactions
- Executor — Executing queries and fetching results
- Database Manager — The unified entry point
License
MIT. See LICENSE.