celemas / quma
A no-ORM database library for executing raw SQL files
This package's canonical repository appears to be gone and the package has been frozen as a result. Email us for help if needed.
Requires
- php: ^8.5
- ext-json: *
- ext-pdo: *
- ext-readline: *
- ext-tokenizer: *
- celemas/cli: ^0.2
Requires (Dev)
- celemas/dev: ^4.2
This package is auto-updated.
Last update: 2026-05-26 15:44:09 UTC
README
Quma is a no-ORM database library for PHP. You store SQL in files, group those files in folders, and execute them through a small PDO-backed API. Quma also ships with template queries and a migration runner.
Requirements
Quma currently requires:
- PHP 8.5 or newer
ext-jsonext-pdoext-readline
Install
composer require celemas/quma
Quickstart
Create a SQL directory structure like this:
sql/
users/
byId.sql
list.sql
Add a query file:
SELECT id, email FROM users WHERE id = ?;
Then configure Quma and run the query:
<?php
declare(strict_types=1);
use Celemas\Quma\Connection;
use Celemas\Quma\Database;
$conn = new Connection(
'sqlite:' . __DIR__ . '/app.sqlite',
__DIR__ . '/sql',
)->migrations(__DIR__ . '/migrations');
$db = new Database($conn);
$user = $db->users->byId(1)->one();
$users = $db->users->list()->all();
Quma maps directories to properties and files to methods:
sql/users/byId.sqlbecomes$db->users->byId()sql/users/list.sqlbecomes$db->users->list()
What Quma provides
- SQL-file based queries with positional or named parameters
- explicit static
/*:name:*/placeholders for trusted driver-aware configuration fragments - PDO-backed execution with exact
one(), stablefirst(), cursor-stylefetch(),all(),lazy(),run(), andlen() - optional row hydration into typed objects
- PHP-powered SQL templates via
.tpqlfiles - multiple SQL directories with driver-specific overrides
- migration commands for
.sql,.tpql, and.phpmigrations - environment-controlled debug output for translated and interpolated SQL
Documentation
Start with the docs in docs/index.md.
Recommended pages:
Testing
Quma runs against SQLite by default and can also run against MySQL and PostgreSQL when you provide test databases.
composer test
composer test:sqlite
composer test:mysql
composer test:pgsql
composer test:all
For database setup and environment variables, see docs/testing.md.
License
This project is licensed under the MIT license.