duon / quma
A no-ORM database library for executing raw SQL files
This package is auto-updated.
Last update: 2026-03-20 17:39:57 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 duon/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 Duon\Quma\Connection; use Duon\Quma\Database; $conn = new Connection( 'sqlite:' . __DIR__ . '/app.sqlite', __DIR__ . '/sql', __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
- PDO-backed execution with
one(),all(),lazy(),run(), andlen() - PHP-powered SQL templates via
.tpqlfiles - multiple SQL directories with driver-specific overrides
- migration commands for
.sql,.tpql, and.phpmigrations - optional query printing for debugging
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.