PHPackages                             powertools/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. powertools/database

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

powertools/database
===================

PHP PowerTools Database Component

341PHP

Since Apr 7Pushed 10y ago1 watchersCompare

[ Source](https://github.com/PHPPowertools/Database)[ Packagist](https://packagist.org/packages/powertools/database)[ RSS](/packages/powertools-database/feed)WikiDiscussions master Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

Database Component
==================

[](#database-component)

***[PHPPowertools](https://github.com/PHPPowertools)*** is a web application framework for PHP &gt;= 5.4.

***[PHPPowertools/Database](https://github.com/PHPPowertools/DOM-Query)*** is the second component of ***PHPPowertools*** that has been released to the public.

The purpose of this component is to provide a simple, lightweight, intuitive, chainable interface for interacting with a database.

---

##### Basic queries :

[](#basic-queries-)

```
use \PowerTools\Database as Database;

// Connect with your database
$database = Database::factory()->connect(DB, DBHOST, DBUSER, DBPASS);

// Select all rows from the `contact` table
if ($data = $database->select()->from('contact')->execute()) {
    var_dump($data);
}

// Select all distinct rows from the `person` table
if ($data = $database->select()->distinct()->from('person')->execute()) {
    var_dump($data);
}

// Select all rows from the `user` table & sort by `firstname`
if ($data = $database->select()->from('user')->order('firstname')->execute()) {
    var_dump($data);
}

// Get the number of records found in the `person` table and the current time
if ($data = $database
                  ->select(
                      ['persons' => ['count' => '*']],
                      ['time' => ['now' => []]]
                  )
                  ->from('person')
                  ->execute()) {
    var_dump($data);
}

// Get the first 10 users that do not have `John` as a first name
// and sort them by `firstname` descendingly.
if ($data = $database
                 ->select()
                 ->from('user')
                 ->where(['firstname' => ['' => 'John']])
                 ->order(['firstname' => 'DESC'])
                 ->limit(0, 10)
                 ->execute()) {
    var_dump($data);
}

// Get a list of users by their full name and profession
if ($data = $database
                 ->select(
                     ['fullname' => ['concat' => ['firstname', ['string' => ' '], 'name']]],
                     'profession'
                 )
                 ->from('contact')
                 ->execute()) {
    var_dump($data);
}

// Insert a new record into the `contact` table
if ($data = $database
                 ->insert(['firstname' => 'Ian', 'name' => 'Stevens', 'profession' => 'CEO'])
                 ->into('contact')
                 ->execute()) {
    var_dump($data);
}

// Update a record in the `contact` table
if ($data = $database
                 ->update(['profession' => 'CTO'])
                 ->in('contact')
                 ->where(['firstname' => 'Ian'])
                 ->order('firstname')
                 ->limit(10)
                 ->execute()) {
     var_dump($data);
}

// Disconnect from your database
$database->disconnect();

// Print query "SELECT * FROM `person`"
echo $database->select()->from('person');
```

##### Joining queries :

[](#joining-queries-)

```
if ($data = $database
                ->rightjoin(
                     $database
                         ->select('id', 'name', 'firstname', 'profession')
                         ->from('contact')
                         ->where(array('firstname' => 'John')),
                     $database
                         ->select('id', 'username', 'name', 'firstname')
                         ->from('user')
                )
                ->on('firstname', ['name' => 'name'])
                ->limit(10)->execute(true)) {
    var_dump($data);
}

if ($data = $database
                ->select('id', 'name', 'firstname', 'profession')
                ->from('contact')
                ->where(array('firstname' => 'John'))
                ->leftjoin(
                     $database
                         ->select('username', 'name', 'firstname')
                         ->from('user')
                )
                ->on('firstname', ['name' => 'name'])
                ->leftjoin(
                     $database
                         ->select('name', 'firstname', 'profession')
                         ->from('person')
                         ->where(array('profession' => 'Developer'))
                )
                ->on('firstname', ['name' => 'name'])
                ->limit(10)->execute(true)) {
    var_dump($data);
}

if ($data = $database
                ->select('id', 'name', 'firstname', 'profession')
                ->from('contact')
                ->where(array('firstname' => 'John'))
                ->leftjoin(
                     $database
                         ->select('username', 'name', 'firstname')
                         ->from('user')
                         ->leftjoin(
                              $database
                                  ->select('name', 'firstname', 'profession')
                                  ->from('person')
                                  ->where(array('profession' => 'Developer'))
                     )
                     ->on('firstname', ['name' => 'name'])
                )
                ->on('firstname', ['name' => 'name'])
                ->limit(10)->execute(true)) {
    var_dump($data);
}

if ($data = $database
                ->leftjoin(
                     $database
                         ->select('id', 'name', 'firstname', 'profession')
                         ->from('contact')
                         ->where(array('firstname' => 'John')), $database
                         ->select('username', 'name', 'firstname')
                         ->from('user')
                         ->leftjoin(
                              $database
                                  ->select('name', 'firstname', 'profession')
                                  ->from('person')
                                  ->where(array('profession' => 'Developer'))
                        )
                        ->on('firstname', ['name' => 'name'])
                )
                ->on('firstname', ['name' => 'name'])
                ->limit(10)->execute(true)) {
    var_dump($data);
}

if ($data = $database
                ->leftjoin(
                     $database
                         ->select('id', 'name', 'firstname', 'profession')
                         ->from('contact')
                         ->where(array('firstname' => 'John'))
                         ->leftjoin(
                              $database
                                  ->select('username', 'name', 'firstname')
                                  ->from('user')
                         )
                         ->on('firstname', ['name' => 'name']),
                     $database
                         ->select('name', 'firstname', 'profession')
                         ->from('person')
                         ->where(array('profession' => 'Developer'))
                )
                ->on('firstname', ['name' => 'name'])
                ->limit(10)->execute(true)) {
    var_dump($data);
}

if ($data = $database
                ->select('id', 'name', 'firstname', 'profession')
                ->from('contact')
                ->where(array('firstname' => 'John'))
                ->leftjoin(
                     $database
                         ->leftjoin(
                              $database
                                  ->select('username', 'name', 'firstname')
                                  ->from('user'), $database
                                  ->select('name', 'firstname', 'profession')
                                  ->from('person')
                                  ->where(array('profession' => 'Developer'))
                         )
                         ->on('firstname', ['name' => 'name'])
                )
                ->on('firstname', ['name' => 'name'])
                ->limit(10)->execute(true)) {
    var_dump($data);
}

if ($data = $database
                ->leftjoin(
                     $database
                         ->select('id', 'name', 'firstname', 'profession')
                         ->from('contact')
                         ->where(array('firstname' => 'John')),
                     $database
                        ->leftjoin(
                             $database
                                 ->select('username', 'name', 'firstname')
                                ->from('user'), $database
                                ->select('name', 'firstname', 'profession')
                                ->from('person')
                                ->where(array('profession' => 'Developer'))
                        )
                        ->on('firstname', ['name' => 'name'])
                )
                ->on('firstname', ['name' => 'name'])
                ->limit(10)->execute(true)) {
    var_dump($data);
}
```

---

##### Author

[](#author)

[![twitter/johnslegers](https://camo.githubusercontent.com/3f588c061f691c1a18db125c956f40ad3796061291c66ea5a54536e255403aa4/68747470733a2f2f656e2e67726176617461722e636f6d2f6176617461722f62663463633934323231333832383130323333353735383632383735653638373f733d3730)](http://twitter.com/johnslegers "Follow @johnslegers on Twitter")[John slegers](http://www.johnslegers.com/)

###  Health Score

21

—

LowBetter than 18% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/883647?v=4)[John Slegers](/maintainers/jslegers)[@jslegers](https://github.com/jslegers)

---

Top Contributors

[![jslegers](https://avatars.githubusercontent.com/u/883647?v=4)](https://github.com/jslegers "jslegers (23 commits)")

### Embed Badge

![Health badge](/badges/powertools-database/health.svg)

```
[![Health](https://phpackages.com/badges/powertools-database/health.svg)](https://phpackages.com/packages/powertools-database)
```

###  Alternatives

[jdorn/sql-formatter

a PHP SQL highlighting library

3.9k117.2M117](/packages/jdorn-sql-formatter)[propel/propel1

Propel is an open-source Object-Relational Mapping (ORM) for PHP5.

8351.6M87](/packages/propel-propel1)[jfelder/oracledb

Oracle DB driver for Laravel

11518.4k](/packages/jfelder-oracledb)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
