Simple and powerfull tool that allows to use json file like a database. It provides collection of methods that you can use like a database query builder.

dev-master 2020-01-12 17:53 UTC

This package is auto-updated.

Last update: 2022-06-14 15:45:16 UTC



68747470733a2f2f6769746875622e7374796c6563692e696f2f7265706f732f3233323837333832392f736869656c643f6272616e63683d6d6173746572 68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f73616d69727a7a2f6a6c64623f6c6162656c3d706870267374796c653d666c61742d737175617265 68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6e7472696275746f72732f6d6f68616d65642d73616d69723930372f6a6c64623f7374796c653d666c61742d737175617265 68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d626c75653f7374796c653d666c61742d737175617265


Simple and powerfull tool that allows to use json file like a database. It provides collection of methods that you can use like a database query builder.


composer require samirzz/jldb


  1. Create a config.php file like that

return [

     * The default json file storage path that the user store the data on it.
    'db_path' => __DIR__ . '/../storage',

     * Database name (json file name)
    'db_name' => 'default.json'
  1. include config file in your project and create new object from the class like that
// index.php
require __DIR__ . '/vendor/autoload.php';

use Samirzz\JsonDB\JsonDB;

$config = include __DIR__ . '/config/jsondb.php';

$db = new JsonDB($config);

Now, you can use the method like that

// index.php

 * NOTE:
 * When you write the name of the table, if the table
 * not exists we will create it for you.
 * So don't worry about the creation of the table.

 | Create Record on the table

$data = [
    "name" => "Mohamed Samir",
    "email" => "",
    "github" => "mohamed-samir907"

// This will create record on users table 
// If the data array doesn't has a primary key
// we will add primary key on create method to the data
// array. The default primary key is 'id' if you need
// to change it, pass the name of primary key as second paramenter
$users = $db->table('users')->create($data); // primaryKey = id
$users = $db->table('users')->create($data, '_key'); //primary key = _key

 | Update an Existing Record on the table

$data = [
    "name" => "Orange",
    "quantity" => 4,
    "price" => 10,
    "totalPrice" => 40

$products = $db->table('products')->update(27, $data);

// if the primary key not equal to 'id' then you can pass the prmary key as the following
$products = $db->table('products')->update(27, $data, '_key');

 | Delete an Existing Record on the table


// OR: in case of primary key changed
$db->table('users')->delete(12, '_key');

 |      Fetch the data

// Get all tables data
$database = $db->all();

// Get table data
$products = $db->table('products')->find(27);
$products = $db->table('products')->find(27, '_key');

// Get table data
$products = $db->table('products')->get();

// Get with where
$products = $db->table('products')
    ->where('name', '=', 'Orange')

$products = $db->table('products')
    ->where('name', '=', 'Orange')
    ->where('totalPrice', '>=', '10')

// Get the records Paginated
$products = $db->table('products')->paginate(20);

// Get last record on the table
$product = $db->table('products')->last();

// Get first record on the table
$product = $db->table('products')->first();

// Get count records on the table
$countProducts = $db->table('products')->count();

// Get count of column=value in the table
$countOrange = $db->table('products')->countOf("name", "Orange");

// If you love object style you can convert the array to object like that
// use toObject() helper function
$users = toObject($db->table('users')->get());

foreach ($users as $user) {
    echo $user->name;


  • add join, like, take, skip, groupBy, orderBy

  • support functions like sum, avg, ... and allow the user to create his own function.

  • select(...$columns)

  • create prepare trait to check pendings and return the result of them.

  • change the structure

    • create folder for each database
    • create json file for each table
  • add encryption to the database

  • add username, password for connect to the database.

  • add Model for each table

  • add schema class and save the tables schema in json file related to the database it self.

  • add validation class for validate the type of the column.

  • add relationships between tables.

  • Add support to redis