{"id":15374349,"url":"https://github.com/yurunsoft/influxdb-orm","last_synced_at":"2025-04-15T11:32:50.205Z","repository":{"id":36472335,"uuid":"226833634","full_name":"Yurunsoft/influxdb-orm","owner":"Yurunsoft","description":"一个用于 InfluxDB 时序数据库的 ORM，终结没有 InfluxDB ORM 的时代。QQ群：17916227","archived":false,"fork":false,"pushed_at":"2024-01-19T02:33:19.000Z","size":199,"stargazers_count":20,"open_issues_count":0,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-14T13:45:27.290Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://gitee.com/yurunsoft/influxdb-orm","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/Yurunsoft.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-12-09T09:28:13.000Z","updated_at":"2024-12-16T05:36:29.000Z","dependencies_parsed_at":"2024-06-19T01:35:58.650Z","dependency_job_id":"07501f4e-8860-4c96-8f76-66616f4a5608","html_url":"https://github.com/Yurunsoft/influxdb-orm","commit_stats":{"total_commits":44,"total_committers":1,"mean_commits":44.0,"dds":0.0,"last_synced_commit":"a65fb802c20bc0a2467466b2d71bb0f9692955b7"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yurunsoft%2Finfluxdb-orm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yurunsoft%2Finfluxdb-orm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yurunsoft%2Finfluxdb-orm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yurunsoft%2Finfluxdb-orm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Yurunsoft","download_url":"https://codeload.github.com/Yurunsoft/influxdb-orm/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249061202,"owners_count":21206467,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":"2024-10-01T13:58:24.845Z","updated_at":"2025-04-15T11:32:49.894Z","avatar_url":"https://github.com/Yurunsoft.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# influxdb-orm\r\n\r\n[![Latest Version](https://img.shields.io/packagist/v/yurunsoft/influxdb-orm.svg)](https://packagist.org/packages/yurunsoft/influxdb-orm)\r\n[![Php Version](https://img.shields.io/badge/php-%3E=7.1-brightgreen.svg)](https://secure.php.net/)\r\n[![IMI License](https://img.shields.io/github/license/yurunsoft/influxdb-orm.svg)](https://github.com/yurunsoft/influxdb-orm/blob/master/LICENSE)\r\n\r\n## 介绍\r\n\r\n一个用于 InfluxDB 时序数据库的 ORM，终结没有 InfluxDB ORM 的时代。\r\n\r\n常用操作一把梭，支持 php-fpm、Swoole 环境，一键轻松切换。\r\n\r\n可以用于所有传统框架、所有 Swoole 框架中！\r\n\r\n## Composer\r\n\r\n本项目可以使用composer安装，遵循psr-4自动加载规则，在你的 `composer.json` 中加入下面的内容:\r\n\r\n```json\r\n{\r\n    \"require\": {\r\n        \"yurunsoft/influxdb-orm\": \"~1.2.0\"\r\n    }\r\n}\r\n```\r\n\r\n然后执行 `composer update` 安装。\r\n\r\n## 使用\r\n\r\n### Swoole 支持\r\n\r\n无需做任何事情即可完美兼容 Swoole 环境！\r\n\r\n### 定义模型\r\n\r\n\u003e 具体可参考 `example/test.php`\r\n\r\n```php\r\n\u003c?php\r\nnamespace Yurun\\InfluxDB\\ORM\\Example\\Model;\r\n\r\nuse Yurun\\InfluxDB\\ORM\\BaseModel;\r\nuse Yurun\\InfluxDB\\ORM\\Annotation\\Tag;\r\nuse Yurun\\InfluxDB\\ORM\\Annotation\\Field;\r\nuse Yurun\\InfluxDB\\ORM\\Annotation\\Value;\r\nuse Yurun\\InfluxDB\\ORM\\Annotation\\Timestamp;\r\nuse Yurun\\InfluxDB\\ORM\\Annotation\\Measurement;\r\n\r\n/**\r\n * @Measurement(name=\"aaa\")\r\n */\r\nclass A extends BaseModel\r\n{\r\n    /**\r\n     * @Tag(name=\"id\", type=\"int\")\r\n     *\r\n     * @var int\r\n     */\r\n    private $id;\r\n\r\n    /**\r\n     * @Field(name=\"name\", type=\"string\")\r\n     *\r\n     * @var string\r\n     */\r\n    private $name;\r\n\r\n    /**\r\n     * @Timestamp(precision=\"s\")\r\n     *\r\n     * @var int|string\r\n     */\r\n    private $time;\r\n\r\n    /**\r\n     * @Value\r\n     *\r\n     * @var int\r\n     */\r\n    private $value;\r\n\r\n    public static function create($id, $name, $time, $value)\r\n    {\r\n        return new static(compact('id', 'name', 'time', 'value'));\r\n    }\r\n\r\n    /**\r\n     * Get the value of time\r\n     *\r\n     * @return int|string\r\n     */ \r\n    public function getTime()\r\n    {\r\n        return $this-\u003etime;\r\n    }\r\n\r\n    /**\r\n     * Set the value of time\r\n     *\r\n     * @param int|string $time\r\n     *\r\n     * @return self\r\n     */ \r\n    public function setTime($time)\r\n    {\r\n        $this-\u003etime = $time;\r\n\r\n        return $this;\r\n    }\r\n\r\n    /**\r\n     * Get the value of id\r\n     *\r\n     * @return int\r\n     */ \r\n    public function getId()\r\n    {\r\n        return $this-\u003eid;\r\n    }\r\n\r\n    /**\r\n     * Set the value of id\r\n     *\r\n     * @param int $id\r\n     *\r\n     * @return self\r\n     */ \r\n    public function setId(int $id)\r\n    {\r\n        $this-\u003eid = $id;\r\n\r\n        return $this;\r\n    }\r\n\r\n    /**\r\n     * Get the value of name\r\n     *\r\n     * @return string\r\n     */ \r\n    public function getName()\r\n    {\r\n        return $this-\u003ename;\r\n    }\r\n\r\n    /**\r\n     * Set the value of name\r\n     *\r\n     * @param string $name\r\n     *\r\n     * @return self\r\n     */ \r\n    public function setName(string $name)\r\n    {\r\n        $this-\u003ename = $name;\r\n\r\n        return $this;\r\n    }\r\n\r\n    /**\r\n     * Get the value of value\r\n     *\r\n     * @return int\r\n     */ \r\n    public function getValue()\r\n    {\r\n        return $this-\u003evalue;\r\n    }\r\n\r\n    /**\r\n     * Set the value of value\r\n     *\r\n     * @param int $value\r\n     *\r\n     * @return self\r\n     */ \r\n    public function setValue(int $value)\r\n    {\r\n        $this-\u003evalue = $value;\r\n\r\n        return $this;\r\n    }\r\n}\r\n\r\n```\r\n\r\n### 数据写入\r\n\r\n```php\r\nuse Yurun\\InfluxDB\\ORM\\InfluxDBManager;\r\n\r\n// 设置客户端名称为test，默认数据库为db_test\r\nInfluxDBManager::setClientConfig('test', '127.0.0.1', 8086, '', '', false, false, 0, 0, 'db_test', '/');\r\n// 设置默认数据库为test\r\nInfluxDBManager::setDefaultClientName('test');\r\n\r\n// 写入数据，支持对象和数组\r\n$r = A::write([\r\n    A::create(mt_rand(1, 999999), time(), time(), mt_rand(1, 100)),\r\n    ['id'=\u003e1, 'name'=\u003e'aaa', 'time'=\u003etime(), 'value'=\u003emt_rand(1, 100)],\r\n]);\r\n\r\nvar_dump($r);\r\n```\r\n\r\n### 数据查询\r\n\r\n```php\r\n// 获取查询器\r\n$query = A::query();\r\n\r\n// 常见用法，反正就那一套，不多说了\r\n$query-\u003efield('id,name')\r\n      -\u003efrom('table')\r\n      -\u003ewhere([\r\n          'id'    =\u003e  1\r\n      ])-\u003ewhere('id', '=', 1)\r\n      -\u003eorWhere('id', '=', 1)\r\n      -\u003eorder('time', 'desc')\r\n      -\u003egroup('id')\r\n      -\u003elimit(0, 10);\r\n\r\n// 查询结果，与 InfluxDB 官方客户端一样用法\r\n$resultSet = $query-\u003eselect();\r\n\r\n// 查询结果转模型，适合用于查询记录而不是统计数据\r\n$model = $resultSet-\u003egetModel(A::class);\r\n\r\n// 查询结果转模型列表，适合用于查询记录而不是统计数据\r\n$list = $resultSet-\u003egetModelList(A::class);\r\n```\r\n\r\n### 模型快捷查询\r\n\r\n适合用于查询记录而不是统计数据\r\n\r\n```php\r\nuse Yurun\\InfluxDB\\ORM\\Query\\QueryBuilder;\r\n\r\n// 查询结果转模型，适合用于查询记录而不是统计数据\r\n$model = A::find(function(QueryBuilder $query){\r\n    $query-\u003ewhere('id', '=', 1)-\u003elimit(1);\r\n});\r\n\r\n// 查询结果转模型列表，适合用于查询记录而不是统计数据\r\n$list = A::select(function(QueryBuilder $query){\r\n    $query-\u003ewhere('id', '=', 1)-\u003elimit(2);\r\n});\r\n\r\n```\r\n\r\n### 获取单个字段值\r\n\r\n```php\r\n$count = A::query()-\u003efield('count(value)')-\u003eselect()-\u003egetScalar();\r\n```\r\n\r\n## 免费技术支持\r\n\r\nQQ群：17916227 [![点击加群](https://pub.idqqimg.com/wpa/images/group.png \"点击加群\")](https://jq.qq.com/?_wv=1027\u0026k=5wXf4Zq)，如有问题会有人解答和修复。\r\n\r\n## 运行环境\r\n\r\n- [PHP](https://php.net/) \u003e= 7.1\r\n- [Composer](https://getcomposer.org/)\r\n\r\n## 版权信息\r\n\r\n`influxdb-orm` 遵循 MIT 开源协议发布，并提供免费使用。\r\n\r\n## 捐赠\r\n\r\n\u003cimg src=\"https://raw.githubusercontent.com/yurunsoft/influxdb-orm/master/res/pay.png\"/\u003e\r\n\r\n开源不求盈利，多少都是心意，生活不易，随缘随缘……\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyurunsoft%2Finfluxdb-orm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyurunsoft%2Finfluxdb-orm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyurunsoft%2Finfluxdb-orm/lists"}