{"id":34742684,"url":"https://github.com/yonna-framework/database","last_synced_at":"2026-05-24T00:32:31.898Z","repository":{"id":57087875,"uuid":"194495850","full_name":"yonna-framework/database","owner":"yonna-framework","description":"Yonna DB","archived":false,"fork":false,"pushed_at":"2020-05-15T09:29:25.000Z","size":305,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-05-24T00:32:30.002Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yonna-framework.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-06-30T09:01:24.000Z","updated_at":"2020-05-15T08:50:03.000Z","dependencies_parsed_at":"2022-08-24T04:23:17.108Z","dependency_job_id":null,"html_url":"https://github.com/yonna-framework/database","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/yonna-framework/database","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yonna-framework%2Fdatabase","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yonna-framework%2Fdatabase/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yonna-framework%2Fdatabase/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yonna-framework%2Fdatabase/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yonna-framework","download_url":"https://codeload.github.com/yonna-framework/database/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yonna-framework%2Fdatabase/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33417486,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T22:14:44.296Z","status":"ssl_error","status_checked_at":"2026-05-23T22:14:43.778Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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-25T04:24:32.007Z","updated_at":"2026-05-24T00:32:31.879Z","avatar_url":"https://github.com/yonna-framework.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![License](https://img.shields.io/github/license/yonna-framework/database.svg)](https://packagist.org/packages/yonna/database)\n[![Repo Size](https://img.shields.io/github/repo-size/yonna-framework/database.svg)](https://packagist.org/packages/yonna/database)\n[![Downloads](https://img.shields.io/packagist/dm/yonna/database.svg)](https://packagist.org/packages/yonna/database)\n[![Version](https://img.shields.io/github/release/yonna-framework/database.svg)](https://packagist.org/packages/yonna/database)\n[![Php](https://img.shields.io/packagist/php-v/yonna/database.svg)](https://packagist.org/packages/yonna/database)\n\n## Yonna DB - ORM 库\n\n```\nYonna是一个极其纯净的纯API-PHP框架.\ndatabase库是yonna最强大的DB-ORM\n```\n\n## \n\n#### 如何安装\n\n##### 可以通过composer安装：`composer require yonna/database`\n\n##### 可以通过git下载：`git clone https://github.com/yonna-framework/database.git`\n\n\u003e Yonna demo：[GOTO yonna](https://github.com/yonna-framework/yonna)\n\n### ORM\n\n\u003e 连贯写法，全解耦，autoload后随意使用\n\u003e\u003e DB自带各种分析优化，所以不再需要 Model层进行优化，可专心编写你的service(scope)\n\n```php\nDB::connect() // 默认 'default'\n    -\u003etable('system_data')\n    -\u003efield('key,value')\n    -\u003ein('key', $key)\n    -\u003eone();\n    \nDB::connect('mysql')\n    -\u003etable('system_data')\n    -\u003efield('key,value')\n    -\u003ein('key', $key）\n    -\u003eone();\n    \nDB::connect('pgsql')\n    -\u003eschemas('default')\n    -\u003etable('system_data')\n    -\u003efield('key,value')\n    -\u003ein('key', $key)\n    -\u003emulti();\n    \nDB::connect('mssql')\n    -\u003eschemas('default')\n    -\u003etable('system_data')\n    -\u003efield('key,value')\n    -\u003ein('key', $key)\n    -\u003epage();\n    \nDB::connect('sqlite')\n    -\u003etable('system_data')\n    -\u003efield('key,value')\n    -\u003ein('key', $key)\n    -\u003ecount();\n    \nDB::connect('redis')-\u003eset('key', 1);\nDB::connect('redis')-\u003eget('key');\nDB::connect('redis')-\u003eincr('key');\nDB::connect('redis')-\u003edecr('key');\n\nDB::connect('redisCo')-\u003eset('swoole', 1);\nDB::connect('redisCo')-\u003eget('swoole');\nDB::connect('redisCo')-\u003eincr('swoole', 1.5);\nDB::connect('redisCo')-\u003edecr('swoole', 2);\n\n```\n\n\u003e 终结方法\n\u003e\u003e one() multi() page() insert() insertAll() delete() count() sum() avg() min() max()\n\n\u003e schemas() / table() 方法会进行一次clear，所以请放在前面\n\n##### 局部闭包（默认）\n##### 等于 ( \"a\" = 1 or \"b\" = 1 ) and( \"c\" = 1 or \"d\" = 1 or \"e\" = 1 )\n```php\nDB::connect('mysql')\n    -\u003etable('demo')\n    -\u003eequalTo('a',1)\n    -\u003eequalTo('b',1)\n    -\u003eclosure('or')\n    -\u003eequalTo('c',1)\n    -\u003eequalTo('d',1)\n    -\u003eequalTo('e',1)\n    -\u003eclosure('or')\n    -\u003eone();\n```\n##### 全局闭包\n##### 等于 (( \"a\" = 1 or \"b\" = 1 ) or \"c\" = 1 or \"d\" = 1 or \"e\" = 1 ) \n```php\nDB::connect('pgsql')\n    -\u003eschemas('default')\n    -\u003etable('demo')\n    -\u003eequalTo('a',1)\n    -\u003eequalTo('b',1)\n    -\u003eclosure('or')\n    -\u003eequalTo('c',1)\n    -\u003eequalTo('d',1)\n    -\u003eequalTo('e',1)\n    -\u003eclosure('or',true)\n    -\u003eone();\n```\n\n\n##### 插入后可以获取 lastInsertId（在无序列表中自动获取可能会产生严重的错误）\n```php\ntry {\n    DB::connect('pgsql')-\u003eschemas('default')-\u003etable('data')-\u003einsert(['data' =\u003e 1]);\n    $lastId = DB::lastInsertId();\n} catch (\\Exception $e) {\n    return $this-\u003eerror($e-\u003egetMessage());\n}\n```\n\n##### 如果你只是想获取sql而不请求数据库，请使用 fetchSql()\n```php\nDB::connect()-\u003etable('demo')-\u003eequalTo('status',1)-\u003efetchSql()-\u003emulti();\n```\n\n### JSON（pgsql）\n#### 搜索例子1\n```sql\nselect * from \"default\".system_data where (data#\u003e\u003e'{project_name,name}')::text like '%系统%';\n```\n#### 搜索例子2\n```sql\nselect * from \"default\".system_data where (\"data\"-\u003e'server_pre_alert_limit'-\u003e'value')::text::int \u003e 5;\n```\n\n### 前端json搜索语法\n`\n{project_name,name} % #TT || (({project_name,name} % #系统 || {project_name,name} != #xxx) \u0026\u0026 {server_pre_alert_limit,value} \u003e #1 \u0026\u0026 ({server_pre_alert_limit,value} \u003e #0 || {server_pre_alert_limit,value} \u003c #100000000))\n`\n```\n[  n   ] isNull\n         {?,?,?} n #\n[  !n  ] isNotNull\n         {?,?,?} !n #\n[  %   ] like\n         {?,?,?} % #???\n[  !%  ] notLike\n         {?,?,?} !% #???\n[  =   ] equalTo\n         {?,?,?} = #???\n[  \u003e   ] greaterThan\n         {?,?,?} \u003e #???\n[  \u003c   ] lessThan\n         {?,?,?} \u003c #???\n[  \u003e=  ] greaterThanOrEqualTo\n         {?,?,?} \u003e= #???\n[  \u003c=  ] lessThanOrEqualTo\n         {?,?,?} \u003c= #???\n[  \u003c\u003e , != ] notEqualTo\n         {?,?,?} \u003c\u003e #???\n         {?,?,?} != #???\n[  \u003e\u003c  ] between\n         {?,?,?} \u003e\u003c #???,???\n[  !\u003e\u003c ] notBetween\n         {?,?,?} !\u003e\u003c #???,???\n[  *   ] any\n         {?,?,?} * #???,???,???...\n[  ^   ] in\n         {?,?,?} ^ #???,???,???...\n[  !^  ] notIn\n         {?,?,?} !^ #???,???,???...\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyonna-framework%2Fdatabase","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyonna-framework%2Fdatabase","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyonna-framework%2Fdatabase/lists"}