PHPackages                             bjornbasar/karhu-db - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. bjornbasar/karhu-db

ActiveLibrary[Database &amp; ORM](/categories/database)

bjornbasar/karhu-db
===================

Thin PDO wrapper + active-record base for the karhu PHP microframework

v0.1.0(2mo ago)0168↓39.3%1MITPHP &gt;=8.3

Since Apr 28Compare

[ Source](https://github.com/bjornbasar/karhu-db)[ Packagist](https://packagist.org/packages/bjornbasar/karhu-db)[ RSS](/packages/bjornbasar-karhu-db/feed)WikiDiscussions Synced 3w ago

READMEChangelog (1)Dependencies (3)Versions (2)Used By (1)

karhu-db
========

[](#karhu-db)

Thin PDO wrapper + active-record base for the [karhu](https://github.com/bjornbasar/karhu) PHP microframework.

Zero runtime dependencies. All queries use prepared statements.

Install
-------

[](#install)

```
composer require bjornbasar/karhu-db
```

Usage
-----

[](#usage)

```
use Karhu\Db\Connection;

$db = new Connection('mysql:host=localhost;dbname=myapp', 'user', 'pass');

// Query helpers
$rows = $db->fetchAll('SELECT * FROM users WHERE active = :active', ['active' => 1]);
$user = $db->fetchOne('SELECT * FROM users WHERE id = :id', ['id' => 42]);
$count = $db->fetchScalar('SELECT COUNT(*) FROM users');

// Insert / update / delete
$id = $db->insert('users', ['name' => 'Bjorn', 'email' => 'bjorn@example.com']);
$db->update('users', ['name' => 'Updated'], ['id' => $id]);
$db->delete('users', ['id' => $id]);
```

Active Record
-------------

[](#active-record)

```
use Karhu\Db\TableBase;

final class UserTable extends TableBase {
    protected string $table = 'users';
    protected string $primaryKey = 'id';
}

$users = new UserTable($db);
$users->getAll();
$users->get(42);
$users->getBy(['role' => 'admin']);
$users->create(['name' => 'New User']);
$users->update(42, ['name' => 'Updated']);
$users->delete(42);
$users->count(['role' => 'admin']);
```

UserRepositoryInterface
-----------------------

[](#userrepositoryinterface)

Implements karhu's `UserRepositoryInterface` for RBAC:

```
use Karhu\Db\PdoUserRepository;

$userRepo = new PdoUserRepository($db);
$app->container()->set(UserRepositoryInterface::class, $userRepo);
```

Expects tables: `users` (username, password\_hash) and `user_roles` (username, role).

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance83

Actively maintained with recent releases

Popularity15

Limited adoption so far

Community5

Small or concentrated contributor base

Maturity39

Early-stage or recently created project

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

88d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/362911?v=4)[Bjorn Christian Basar](/maintainers/bjornbasar)[@bjornbasar](https://github.com/bjornbasar)

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/bjornbasar-karhu-db/health.svg)

```
[![Health](https://phpackages.com/badges/bjornbasar-karhu-db/health.svg)](https://phpackages.com/packages/bjornbasar-karhu-db)
```

###  Alternatives

[jdorn/sql-formatter

a PHP SQL highlighting library

3.9k117.2M118](/packages/jdorn-sql-formatter)[propel/propel1

Propel is an open-source Object-Relational Mapping (ORM) for PHP5.

8351.6M87](/packages/propel-propel1)[jfelder/oracledb

Oracle DB driver for Laravel

11518.4k](/packages/jfelder-oracledb)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
