PHPackages                             reactphp-x/orm - 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. reactphp-x/orm

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

reactphp-x/orm
==============

A database OMR for ReactPHP based on illuminate/database and react/mysql packages

v2.0.0(1y ago)052MITPHPPHP ^8.1

Since Aug 10Pushed 1y agoCompare

[ Source](https://github.com/reactphp-x/orm)[ Packagist](https://packagist.org/packages/reactphp-x/orm)[ RSS](/packages/reactphp-x-orm/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (2)Dependencies (3)Versions (5)Used By (0)

reactphp-orm
============

[](#reactphp-orm)

install
-------

[](#install)

```
composer require reactphp-x/orm -vvv

```

init
----

[](#init)

```
require __DIR__.'/vendor/autoload.php';

use ReactphpX\Orm\AsyncMysqlConnector;
use ReactphpX\Orm\AsyncMysqlConnection;
use Illuminate\Container\Container;
use Illuminate\Database\Capsule\Manager as DB;
use Illuminate\Database\Connection;

Connection::resolverFor('async-mysql', function ($connection, $database, $prefix, $config) {
    return new AsyncMysqlConnection($connection, $database, $prefix, $config);
});
$container = new Container;
$container->bind(AsyncMysqlConnector::class, fn () => new AsyncMysqlConnector);
$container->alias(AsyncMysqlConnector::class, 'db.connector.async-mysql');

$db = new DB($container);

$db->addConnection([
    'driver' => 'async-mysql',
    'host' => getenv('MYSQL_HOST') ?: '',
    'port' => getenv('MYSQL_PORT') ?: '',
    'database' => getenv('MYSQL_DATABASE') ?: '',
    'username' => getenv('MYSQL_USER') ?: '',
    'password' => getenv('MYSQL_PASSWORD') ?: '',
    'charset' => 'utf8mb4',
    'pool' => [
        'min_connections' => 2, // min 2 connection
        'max_connections' => 10, // max 10 connection
        'max_wait_queue' => 110, // how many sql in queue
        'wait_timeout' => 5,// wait time include response time
        'idle' => 60, //
    ]
]);

$db->setAsGlobal();
$db->bootEloquent();

```

how to use
----------

[](#how-to-use)

sync 使用 和 laravel 一样，可以参考 laravel 文档

async 使用

```
DB::enableQueryLog();

$promises = [];

for ($i=0; $i < 10; $i++) {
    $a = \React\Async\async(fn() => User::with('posts.comments', 'posts.tags')->get()->each(function ($user) {
        echo $user->name . PHP_EOL;
        $user->posts->each(function ($post) {
            echo $post->title . PHP_EOL;
            $post->comments->each(function ($comment) {
                echo $comment->content . PHP_EOL;
            });
        });
    }))();

    $promises[] = $a;

    $b = \React\Async\async(fn() => Post::with('user', 'comments', 'tags')->get()->each(function ($post) {
        echo $post->title . PHP_EOL;
        echo $post->user->name . PHP_EOL;
        $post->comments->each(function ($comment) {
            echo $comment->content . PHP_EOL;
        });
        $post->tags->each(function ($tag) {
            echo $tag->name . PHP_EOL;
        });
    }))();

    $promises[] = $b;

}

\React\Promise\all($promises)->then(function () {
    print_r(DB::getQueryLog());
});
```

notice
------

[](#notice)

transaction only support DB not support Model

```
DB::transaction(function ($db) {
    // importrant use $db not use DB
    $db->table('test_users')->insert([
        'name' => 'test-success',
    ]);
});

// or

$db = DB::beginTransaction();

try {
    $db->table('test_users')->insert([
        'name' => 'test-failed',
    ]);
    $db->table('test_users')->insert([
        'name44' => 'test',
    ]);
    $db->commit();
} catch (\Throwable $e) {
    $db->rollBack();
    var_dump($e->getMessage());
}

```

Recommended use `DB::transaction`

again notice

> 1. transaction only support DB not support Model

License
-------

[](#license)

MIT

###  Health Score

30

—

LowBetter than 64% of packages

Maintenance44

Moderate activity, may be stable

Popularity8

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity51

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

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

Every ~67 days

Total

4

Last Release

444d ago

Major Versions

v1.0.0 → 2.0.0.x-dev2024-10-07

1.9.9.x-dev → v2.0.02025-02-28

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/76907477?v=4)[wpjscc](/maintainers/wpjscc)[@wpjscc](https://github.com/wpjscc)

---

Top Contributors

[![wpjscc](https://avatars.githubusercontent.com/u/76907477?v=4)](https://github.com/wpjscc "wpjscc (21 commits)")

---

Tags

databaseormmysqlreactphpilluminatereact

### Embed Badge

![Health badge](/badges/reactphp-x-orm/health.svg)

```
[![Health](https://phpackages.com/badges/reactphp-x-orm/health.svg)](https://phpackages.com/packages/reactphp-x-orm)
```

###  Alternatives

[cycle/database

DBAL, schema introspection, migration and pagination

64690.9k31](/packages/cycle-database)[expressodev/laravel-codeigniter-db

Integration layer allowing use of the Laravel database library in CodeIgniter applications

294.0k1](/packages/expressodev-laravel-codeigniter-db)

PHPackages © 2026

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