PHPackages                             georgeff/database - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. georgeff/database

ActiveLibrary[Database &amp; ORM](/categories/database)

georgeff/database
=================

A fluent query builder and database abstraction layer with read replica and transaction support.

1.0.0(1mo ago)016↓50%MITPHPPHP ^8.4CI passing

Since Apr 2Pushed 1mo agoCompare

[ Source](https://github.com/MikeGeorgeff/database)[ Packagist](https://packagist.org/packages/georgeff/database)[ RSS](/packages/georgeff-database/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (5)Versions (2)Used By (0)

georgeff/database
=================

[](#georgeffdatabase)

A database library built on top of [aura/sql](https://github.com/auraphp/Aura.Sql) and [aura/sqlquery](https://github.com/auraphp/Aura.SqlQuery) that provides driver configuration, lazy connection management, a fluent query builder, and a clean execution layer.

Installation
------------

[](#installation)

```
composer require georgeff/database
```

Quick Start
-----------

[](#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', '
