{"id":34010859,"url":"https://github.com/wpjscc/reactphp-orm","last_synced_at":"2026-05-28T08:32:07.660Z","repository":{"id":149896337,"uuid":"622260356","full_name":"wpjscc/reactphp-orm","owner":"wpjscc","description":"reactphp orm","archived":false,"fork":false,"pushed_at":"2023-11-22T13:38:02.000Z","size":24,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-15T00:42:42.830Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wpjscc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-04-01T15:34:48.000Z","updated_at":"2023-04-17T09:33:22.000Z","dependencies_parsed_at":"2023-11-22T14:48:51.055Z","dependency_job_id":null,"html_url":"https://github.com/wpjscc/reactphp-orm","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/wpjscc/reactphp-orm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wpjscc%2Freactphp-orm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wpjscc%2Freactphp-orm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wpjscc%2Freactphp-orm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wpjscc%2Freactphp-orm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wpjscc","download_url":"https://codeload.github.com/wpjscc/reactphp-orm/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wpjscc%2Freactphp-orm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33601380,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-28T02:00:06.440Z","response_time":99,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-12-13T12:22:08.088Z","updated_at":"2026-05-28T08:32:07.654Z","avatar_url":"https://github.com/wpjscc.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# reactphp-orm\n\n\n## install\n\n```\ncomposer require wpjscc/reactphp-orm -vvv\n```\n\n\n## init\n\n```\nrequire __DIR__.'/vendor/autoload.php';\n\nuse Wpjscc\\React\\Orm\\AsyncMysqlConnector;\nuse Wpjscc\\React\\Orm\\AsyncMysqlConnection;\nuse Illuminate\\Container\\Container;\nuse Illuminate\\Database\\Capsule\\Manager as DB;\nuse Illuminate\\Database\\Connection;\n\nConnection::resolverFor('async-mysql', function ($connection, $database, $prefix, $config) {\n    return new AsyncMysqlConnection($connection, $database, $prefix, $config);\n});\n$container = new Container;\n$container-\u003ebind(AsyncMysqlConnector::class, fn () =\u003e new AsyncMysqlConnector);\n$container-\u003ealias(AsyncMysqlConnector::class, 'db.connector.async-mysql'); \n\n$db = new DB($container);\n\n$db-\u003eaddConnection([\n    'driver' =\u003e 'async-mysql',\n    'host' =\u003e getenv('MYSQL_HOST') ?: '',\n    'database' =\u003e getenv('MYSQL_DATABASE') ?: '',\n    'username' =\u003e getenv('MYSQL_USER') ?: '',\n    'password' =\u003e getenv('MYSQL_PASSWORD') ?: '',\n    'charset' =\u003e 'utf8mb4',\n    'pool' =\u003e [\n        'min_connections' =\u003e 2, // min 2 connection\n        'max_connections' =\u003e 10, // max 10 connection\n        'max_wait_queue' =\u003e 110, // how many sql in queue\n        'wait_timeout' =\u003e 5,// wait time include response time\n        'keep_alive' =\u003e 10, // \n    ]\n]);\n\n$db-\u003esetAsGlobal();\n$db-\u003ebootEloquent();\n```\n\n## how to use \n\nsync 使用 和 laravel 一样，可以参考 laravel 文档\n\n\nasync 使用\n\n```php\n\nDB::enableQueryLog();\n\n$promises = [];\n\nfor ($i=0; $i \u003c 10; $i++) { \n    $a = \\React\\Async\\async(fn() =\u003e User::with('posts.comments', 'posts.tags')-\u003eget()-\u003eeach(function ($user) {\n        echo $user-\u003ename . PHP_EOL;\n        $user-\u003eposts-\u003eeach(function ($post) {\n            echo $post-\u003etitle . PHP_EOL;\n            $post-\u003ecomments-\u003eeach(function ($comment) {\n                echo $comment-\u003econtent . PHP_EOL;\n            });\n        });\n    }))();\n\n    $promises[] = $a;\n    \n    \n    $b = \\React\\Async\\async(fn() =\u003e Post::with('user', 'comments', 'tags')-\u003eget()-\u003eeach(function ($post) {\n        echo $post-\u003etitle . PHP_EOL;\n        echo $post-\u003euser-\u003ename . PHP_EOL;\n        $post-\u003ecomments-\u003eeach(function ($comment) {\n            echo $comment-\u003econtent . PHP_EOL;\n        });\n        $post-\u003etags-\u003eeach(function ($tag) {\n            echo $tag-\u003ename . PHP_EOL;\n        });\n    }))();\n\n    $promises[] = $b;\n    \n}\n\n\\React\\Promise\\all($promises)-\u003ethen(function () {\n    print_r(DB::getQueryLog());\n});\n\n```\n\n\n## notice\n\ntransaction only support DB not support Model\n\n```\nDB::transaction(function ($db) {\n    // importrant use $db not use DB\n    $db-\u003etable('test_users')-\u003einsert([\n        'name' =\u003e 'test-success',\n    ]);\n});\n\n\n// or \n\n$db = DB::beginTransaction();\n\ntry {\n    $db-\u003etable('test_users')-\u003einsert([\n        'name' =\u003e 'test-failed',\n    ]);\n    $db-\u003etable('test_users')-\u003einsert([\n        'name44' =\u003e 'test',\n    ]);\n    $db-\u003ecommit();\n} catch (\\Throwable $e) {\n    $db-\u003erollBack();\n    var_dump($e-\u003egetMessage());\n}\n\n```\n\nRecommended use `DB::transaction`\n\n\nagain notice\n\n\u003e 1. transaction only support DB not support Model\n\n\n\n## License\n\nMIT","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwpjscc%2Freactphp-orm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwpjscc%2Freactphp-orm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwpjscc%2Freactphp-orm/lists"}