PHPackages                             shuraih/dbflex - 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. shuraih/dbflex

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

shuraih/dbflex
==============

A simple and flexible Database Object Library

v1.3.4(6mo ago)032MITPHPPHP &gt;=7.4

Since Jul 30Pushed 6mo ago1 watchersCompare

[ Source](https://github.com/Shuraih-Usman/dbflex)[ Packagist](https://packagist.org/packages/shuraih/dbflex)[ RSS](/packages/shuraih-dbflex/feed)WikiDiscussions master Synced 2d ago

READMEChangelogDependenciesVersions (9)Used By (0)

DBFlex
======

[](#dbflex)

DBFlex is a lightweight PHP database abstraction library designed to simplify database operations using PDO. It provides a fluent interface for performing common database operations such as selecting, inserting, updating, deleting records, and handling transactions.

Requirements
------------

[](#requirements)

- PHP 7.4 or higher
- PDO extension enabled
- MySQL database
- SQLITE3 database

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

[](#installation)

### Via Composer

[](#via-composer)

Add DBFlex to your project via Composer. Run the following command in your project directory:

```
composer require shuraih/dbflex

```

### Manual Installation

[](#manual-installation)

Download the DBFlex library and include it in your project:

Usage
-----

[](#usage)

### Initialize the DBFlex Class

[](#initialize-the-dbflex-class)

```
require_once 'path/to/DBFlex.php';
// Initialize the DB class with  MYSQL database credentials
$db = new DBFlex('mysql', 'localhost', 'dbuser', 'dbpassword', 'test_db');

// Initialize the DB class with  SQLITE database credentials
$dbPath = 'sqlite.db';
$db = new DBFlex('sqlite', null, null, null, null, $dbPath);

```

### Insert Data

[](#insert-data)

```
$data = ['name' => 'John Doe',
'email' => 'john@example.com'];
$id = $db->table('users')->insert($data);
echo "Inserted ID: " . $id . "\n"; ###getting last inserted ID;

```

### Selecting specific columns

[](#selecting-specific-columns)

```
$db->table('users')->select('name')->where('id', $id);
$results = $db->get();
echo "Select Result:\n";
print_r($results);

```

### selecting All columns

[](#selecting-all-columns)

```
$db->table('users');
$results = $db->get();
echo "Select Result:\n";
print_r($results);

```

### where clause using equality operator

[](#where-clause-using-equality-operator)

```
$db->table('users')->select('name')->where('id', $id, '=');
$results = $db->get();
echo "Select Result:\n";
print_r($results);

```

### where clause using lessthan operator

[](#where-clause-using-lessthan-operator)

```
$db->table('users')->select('name')->where('id', $id, '');
$results = $db->get();
echo "Select Result:\n";
print_r($results);

```

### where clause using default which is equality operator

[](#where-clause-using-default-which-is-equality-operator)

```
$db->table('users')->select('name')->where('id', $id);
$results = $db->get();
echo "Select Result:\n";
print_r($results);

```

### Update Data

[](#update-data)

```
$data = ['name' => 'Jane Doe'];
$db->table('users')->where('id', $id)->update($data);
$db->table('users')->select('name')->where('id', $id);
$results = $db->get();
echo "Updated Result:\n";
print_r($results);

```

### Delete Data

[](#delete-data)

```
$db->table('users')->where('id', $id)->delete();
$db->table('users')->select()->where('id', $id);
$results = $db->get();
echo "After Delete:\n";
print_r($results);

```

### Count

[](#count)

```
$count = $db->table('users')->count();
echo "User Count: " . $count . "\n";

```

### OrderBy

[](#orderby)

```
$db->table('users')->select('name')->orderBy('name', 'DESC');
$results = $db->get();
echo "Ordered Results:\n";
print_r($results);

```

### Limit for pagination

[](#limit-for-pagination)

```
$db->table('users')->select('name')->limit(1);
$results = $db->get();
echo "Limited Results:\n";
print_r($results);

```

### Offset for pagination

[](#offset-for-pagination)

```
$db->table('users')->select('name')->offset(1)->limit(1);
$results = $db->get();
echo "Offset Results:\n";
print_r($results);

```

### Join : Inner Join

[](#join--inner-join)

```
$db->table('users')
    ->select('users.name, orders.id')
    ->join('orders', 'users.id', '=', 'orders.user_id');
$results = $db->get();
echo "Join Results:\n";
print_r($results);

```

### Left Join

[](#left-join)

```
echo " Left Join...\n";
$db->table('users')
    ->select('users.name', 'orders.product')
    ->leftJoin('orders', 'users.id', '=', 'orders.user_id');
$results = $db->get();
echo "Left Join Results:\n";
print_r($results);

```

### Right Join

[](#right-join)

```
echo " Right Join...\n";
$db->table('users')
    ->select('users.name', 'orders.product')
    ->rightJoin('orders', 'users.id', '=', 'orders.user_id');
$results = $db->get();
echo "Right Join Results:\n";
print_r($results);

```

### get first data

[](#get-first-data)

```
$db->table('users')->where('status', 1)->first();
print_r($results);

```

### Raw Query

[](#raw-query)

```
$db->raw('SELECT * FROM users WHERE email = ?', ['john@example.com']);
$results = $db->get();
echo "Raw Query Results:\n";
print_r($results);

```

### GroupBy

[](#groupby)

```
$db->table('orders')->select('COUNT(*) as count')->groupBy('status');
$results = $db->get();
echo "GroupBy Results:\n";
print_r($results);

```

### Search

[](#search)

```
$db->table('users')->select('name')->search(['name'], 'John');
$results = $db->get();
echo "Search Results:\n";
print_r($results);

```

### Transaction

[](#transaction)

```
$db->startTransaction();
if($db->table('users')->insert($data))
{
    $db->commit();
} else {
    $db->rollback();
}

```

### Transaction Function

[](#transaction-function)

```
try {
    $db->transaction(function($db) {
        $db->table('accounts')->where('id', 1)->update(['balance' => 800]);
        $db->table('accounts')->where('id', 2)->update(['balance' => 1200]);
    });

    echo "Transaction successful";
} catch (Exception $e) {
    echo "Transaction failed: " . $e->getMessage();
}

```

### Execute and run SQL

[](#execute-and-run-sql)

```
$db->raw("UPDATE users SET name = ? WHERE id = ?", ['Ahmed', 1])->run();

$db->execute("DELETE FROM users WHERE id = ?", [7]);

```

### find() Find row by ID

[](#find-find-row-by-id)

```
// default column is "id"
$user = $db->table('users')->find(3);

// you can define the column name
$user = $db->table('users')->find(3, 'user_id');

```

### lastInsertId() get the last row Insert ID

[](#lastinsertid-get-the-last-row-insert-id)

```
// default column is "id"
$id = $db->lastInsertId();

```

### Pluck() - Return values from a single column.

[](#pluck---return-values-from-a-single-column)

```
$emails = $db->table('users')->pluck('email');
// ['test@gmail.com', 'admin@x.com', ...]

```

### exists() - Check if any record matches the condition..

[](#exists---check-if-any-record-matches-the-condition)

```
$found = $db->table('users')->where('email', 'admin@x.com')->exists();
// true or false

```

### doesntExist() - Inverse of exists().

[](#doesntexist---inverse-of-exists)

```
$notFound = $db->table('users')->where('email', 'none@x.com')->doesntExist();
// true or false

```

### value($column) - Get the value of a single column from the first result.

[](#valuecolumn---get-the-value-of-a-single-column-from-the-first-result)

```
$name = $db->table('users')->where('id', 1)->value('name');
// shuraihu

```

### increment($column, $amount = 1) - Increase a numeric field.

[](#incrementcolumn-amount--1---increase-a-numeric-field)

```
$db->table('products')->where('id', 5)->increment('stock', 10);

```

### decrement($column, $amount = 1) - Decrease a numeric field.

[](#decrementcolumn-amount--1---decrease-a-numeric-field)

```
$db->table('products')->where('id', 5)->decrement('stock', 2);

```

### whereIn($column, array $values) - Filter by multiple values.

[](#whereincolumn-array-values---filter-by-multiple-values)

```
$admins = $db->table('users')->whereIn('role', ['admin', 'super'])->get();

```

### whereNotIn($column, array $values) - Opposite of whereIn.

[](#wherenotincolumn-array-values---opposite-of-wherein)

```
$nonAdmins = $db->table('users')->whereNotIn('role', ['admin'])->get();

```

### truncate() - Empty the table.

[](#truncate---empty-the-table)

```
$db->table('logs')->truncate();

```

### whereNull($column) - Filter where column IS NULL.

[](#wherenullcolumn---filter-where-column-is-null)

```
$noEmails = $db->table('users')->whereNull('email')->get();

```

### whereNotNull($column) - Filter where column IS NOT NULL.

[](#wherenotnullcolumn---filter-where-column-is-not-null)

```
$withEmails = $db->table('users')->whereNotNull('email')->get();

```

### firstOrFail() - Throws error if no result found.

[](#firstorfail---throws-error-if-no-result-found)

```
$user = $db->table('users')->where('id', 999)->firstOrFail();

```

### toSql() - Returns the compiled SQL (for debugging).

[](#tosql---returns-the-compiled-sql-for-debugging)

```
$sql = $db->table('users')->where('name', 'Ali')->toSql();
echo $sql;

```

### min('column'), max(), avg() - Get min, amx and average value,

[](#mincolumn-max-avg---get-min-amx-and-average-value)

```
	$db->table('orders')->min('amount');
    $db->table('orders')->max('amount');
    $db->table('orders')->avg('amount');

```

### Author

[](#author)

- Shuraihu Usman
- +2348140419490
-

###  Health Score

34

—

LowBetter than 75% of packages

Maintenance69

Regular maintenance activity

Popularity7

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity45

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.

###  Release Activity

Cadence

Every ~74 days

Recently: every ~127 days

Total

8

Last Release

180d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/33420175?v=4)[shuraih99](/maintainers/shuraih99)[@shuraih99](https://github.com/shuraih99)

---

Top Contributors

[![Shuraih-Usman](https://avatars.githubusercontent.com/u/33420112?v=4)](https://github.com/Shuraih-Usman "Shuraih-Usman (3 commits)")

### Embed Badge

![Health badge](/badges/shuraih-dbflex/health.svg)

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

###  Alternatives

[jdorn/sql-formatter

a PHP SQL highlighting library

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

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

8351.6M87](/packages/propel-propel1)[pgvector/pgvector

pgvector support for PHP

198741.5k12](/packages/pgvector-pgvector)[jfelder/oracledb

Oracle DB driver for Laravel

11518.4k](/packages/jfelder-oracledb)

PHPackages © 2026

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