PHP code example of pinoox / devdb

1. Go to this page and download the library: Download pinoox/devdb library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

pinoox / devdb example snippets




inoox\DevDB\DevDatabase;

$db = DevDatabase::open(__DIR__ . '/storage/devdb');

$db->createTable('notes', [
    'id' => ['type' => 'integer', 'primary' => true, 'auto_increment' => true],
    'body' => 'string',
    'created_at' => 'string',
]);

$db->statement(
    'insert into notes (body, created_at) values (?, ?), (?, ?)',
    [
        'First note',
        '2026-06-29 10:00:00',
        'Second note',
        '2026-06-30 10:00:00',
    ],
);

$notes = $db->select(
    'select id, upper(body) as title, date(created_at) as day from notes where date(created_at) >= ? order by id desc',
    ['2026-06-29'],
);

foreach ($notes as $note) {
    echo $note->id . ': ' . $note->title . ' @ ' . $note->day . PHP_EOL;
}

$affected = $db->execute('delete from notes where id = ?', [1]);

$latest = $db->selectOne(
    'select * from notes order by id desc limit 1',
);



inoox\DevDB\Compat\DevPDO;

$pdo = DevPDO::open(__DIR__ . '/storage/devdb');

$pdo->exec('create table users (id integer primary key auto_increment, name varchar(80))');
$pdo->exec("insert into users (name) values ('Ava')");

$stmt = $pdo->prepare('select * from users where name = :name');
$stmt->execute(['name' => 'Ava']);

$users = $stmt->fetchAll(DevPDO::FETCH_ASSOC);
$id = $pdo->lastInsertId();



inoox\DevDB\Compat\DevMysqli;

$db = DevMysqli::open(__DIR__ . '/storage/devdb');

$db->query('create table posts (id integer primary key auto_increment, title varchar(120))');
$db->query("insert into posts (title) values ('Hello')");

$result = $db->query('select * from posts');
$post = $result->fetch_assoc();

$id = $db->insert_id;

Post::create([
    'title' => 'Hello DevDB',
    'status' => 'published',
]);

$posts = Post::where('status', 'published')
    ->orderBy('id', 'desc')
    ->get();

$rows = DB::app()->select(
    'select id, title from posts where date(created_at) = ?',
    ['2026-06-29'],
);



namespace App\Providers;

use Illuminate\Database\Connection;
use Illuminate\Support\ServiceProvider;
use Pinoox\Component\Database\Connections\DevDbConnection;

class DevDbServiceProvider extends ServiceProvider
{
    public function boot(): void
    {
        Connection::resolverFor('devdb', function ($connection, $database, $prefix, $config) {
            return new DevDbConnection(null, $database ?: 'devdb', $prefix, $config);
        });
    }
}

'connections' => [
    'devdb' => [
        'driver' => 'devdb',
        'database' => 'devdb',
        'path' => storage_path('devdb'),
        'prefix' => '',
    ],
],

DB::table('posts')->insert([
    'title' => 'Hello from DevDB',
    'status' => 'draft',
]);

$posts = DB::table('posts')
    ->where('status', 'draft')
    ->orderBy('id')
    ->get();

$raw = DB::select(
    'select id, upper(title) as title from posts where status = ?',
    ['draft'],
);

$rows = $db->select(
    'select date(created_at) as day, count(*) as total, sum(abs(amount)) as volume
     from events
     where lower(email) like ?
     group by date(created_at)
     having total >= ?
     order by day desc',
    ['%@example.com', 1],
);

$db->statement(
    'create table users (
        id integer primary key auto_increment,
        name varchar(120) not null,
        email varchar(190),
        created_at datetime,
        unique key users_email_unique (email)
    )'
);

$db->statement('alter table users add column status varchar(20) default "active"');
$db->statement('create index users_status_index on users (status)');

$tables = $db->select('show tables');
$columns = $db->select('describe users');
$indexes = $db->select('show index from users');

$snapshot = $db->snapshot('before-import');

$db->statement('delete from users where id > ?', [10]);

$db->restoreSnapshot('before-import');

$snapshots = $db->snapshots();
$db->deleteSnapshot('before-import');

$db->writeManifest();

// Later...
if ($db->hasChangesSinceManifest()) {
    // Reload, inspect, or refresh tooling.
}

$db = DevDatabase::open(__DIR__ . '/storage/devdb');

$db->createTable('users', [
    'id' => ['type' => 'integer', 'primary' => true, 'auto_increment' => true],
    'name' => 'string',
    'email' => ['type' => 'string', 'nullable' => false],
]);

$rows = $db->select('select * from users where email like ?', ['%@example.com']);

$user = $db->selectOne('select * from users where id = ?', [1]);

$db->statement('insert into users (name, email) values (?, ?)', ['Ava', '[email protected]']);

$affected = $db->execute('update users set name = ? where id = ?', ['Ava Dev', 1]);

$db->executeDump(file_get_contents(__DIR__ . '/database/schema.sql'));

$plan = $db->explain('select p.id from posts as p where p.status = "published"');

$db->strict(false)->executeDump($legacyDump);

$store = $db->store();
$status = $store->status();

$db->clear();

$snapshot = $db->snapshot('checkpoint');

$snapshots = $db->snapshots();

$db->restoreSnapshot('checkpoint');

$db->deleteSnapshot('checkpoint');

$manifest = $db->writeManifest();

$changed = $db->hasChangesSinceManifest();

Pinoox\Component\Database\Connections\DevDbConnection

use Pinoox\Component\Database\Connections\DevDbConnection;

$connection = new DevDbConnection(null, 'devdb', '', [
    'path' => __DIR__ . '/storage/devdb',
]);

$connection->getSchemaBuilder()->create('posts', function ($table) {
    $table->increments('id');
    $table->string('title');
});

$connection->insert(
    'insert into posts (title) values (?)',
    ['Hello'],
);

$posts = $connection->select('select * from posts');
bash
devdb:export storage/devdb/export.json
text
src/
  DevDatabase.php
  Component/Database/Connections/
    DevDbConnection.php
  Component/Database/DevDB/
    DevDbException.php
    DevDbQueryBuilder.php
    DevDbRuntime.php
    DevDbSchemaBuilder.php
    DevDbSqlTranslator.php
    DevDbStore.php
    DevDbMySqlExporter.php
  Terminal/DevDB/
    Concerns/UsesDevDbStore.php
    DevDbClearCommand.php
    DevDbExportCommand.php
    DevDbExportMySqlCommand.php
    DevDbInspectCommand.php
    DevDbSeedCommand.php
    DevDbSyncMySqlCommand.php
    DevDbStatusCommand.php
bash
php -l src/DevDatabase.php