duon/quma

A no-ORM database library for executing raw SQL files

Maintainers

Package info

github.com/duonrun/quma

Homepage

pkg:composer/duon/quma

Statistics

Installs: 135

Dependents: 1

Suggesters: 0

Stars: 0

Open Issues: 0

0.1.1 2026-02-07 16:08 UTC

This package is auto-updated.

Last update: 2026-03-20 17:39:57 UTC


README

Software License Codacy Badge Codacy Badge Psalm level Psalm coverage

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-json
  • ext-pdo
  • ext-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.sql becomes $db->users->byId()
  • sql/users/list.sql becomes $db->users->list()

What Quma provides

  • SQL-file based queries with positional or named parameters
  • PDO-backed execution with one(), all(), lazy(), run(), and len()
  • PHP-powered SQL templates via .tpql files
  • multiple SQL directories with driver-specific overrides
  • migration commands for .sql, .tpql, and .php migrations
  • 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.