ORM для временных данных InfluxDB, который завершает эру отсутствия ORM для InfluxDB. Поддерживает основные операции, работает в окружениях php-fpm и Swoole, легко переключается между ними. Может использоваться во всех традиционных фреймворках и всех фреймворках Swoole!
Проект можно установить с помощью Composer, следуя правилам автоматической загрузки PSR-4. Добавьте следующее содержимое в ваш composer.json
:
{
"require": {
"yurunsoft/influxdb-orm": "^1.1.0"
}
}
Затем выполните composer update
для установки.
Выполните в событии WorkerStart
:
\Yurun\Util\YurunHttp::setDefaultHandler(\Yurun\Util\YurunHttp\Handler\Swoole::class);
Подробнее см.
example/test.php
<?php
namespace Yurun\InfluxDB\ORM\Example\Model;
use Yurun\InfluxDB\ORM\BaseModel;
use Yurun\InfluxDB\ORM\Annotation\Tag;
use Yurun\InfluxDB\ORM\Annotation\Field;
use Yurun\InfluxDB\ORM\Annotation\Value;
use Yurun\InfluxDB\ORM\Annotation\Timestamp;
use Yurun\InfluxDB\ORM\Annotation\Measurement;
/**
* @Measurement(name="aaa")
*/
class A extends BaseModel
{
/**
* @Tag(name="id", type="int")
*
* @var int
*/
private $id;
/**
* @Field(name="name", type="string")
*
* @var string
*/
private $name;
/**
* @Timestamp(precision="s")
*
* @var int|string
*/
private $time;
/**
* @Value
*
* @var int
*/
``````markdown
### Запись данных
```php
use Yurun\InfluxDB\ORM\InfluxDBManager;
// Установка имени клиента как test, по умолчанию база данных db_test
InfluxDBManager::setClientConfig('test', '127.0.0.1', 'bkgrnd8086', '', '', false, false, 0, 0, 'db_test', '/');
// Установка по умолчанию базы данных как test
InfluxDBManager::setDefaultClientName('test');
// Запись данных, поддерживаются объекты и массивы
$r = A::write([
A::create(mt_rand(1, 999999), time(), time(), mt_rand(1, 100)),
['id'=>1, 'name'=>'aaa', 'time'=>time(), 'value'=>mt_rand(1, 100)],
]);
var_dump($r);
// Получение объекта запроса
$query = A::query();
// Обычное использование, стандартные методы
$query->field('id,name')
->from('table')
->where([
'id' => 1
])->where('id', '=', 1)
->orWhere('id', '=', 1)
->order('time', 'desc')
->group('id')
->limit(0, 10);
// Выполнение запроса, аналогично официальному клиенту InfluxDB
$resultSet = $query->select();
// Преобразование результата запроса в модель, подходит для запроса записей, а не статистики
$model = $resultSet->getModel(A::class);
// Преобразование результата запроса в список моделей, подходит для запроса записей, а не статистики
$list = $resultSet->getModelList(A::class);
```### Быстрый поиск моделей
Подходит для запроса записей, а не статистических данных
```php
use Yurun\InfluxDB\ORM\Query\QueryBuilder;
// Преобразование результатов запроса в модель, подходит для запроса записей, а не статистических данных
$model = A::find(function(QueryBuilder $query){
$query->where('id', '=', 1)->limit(1);
});
// Преобразование результатов запроса в список моделей, подходит для запроса записей, а не статистических данных
$list = A::select(function(QueryBuilder $query){
$query->where('id', '=', 1)->limit(2);
});
$count = A::query()->field('count(value)')->select()->getScalar();
QQ-группа: 17916227 [! Нажмите, чтобы присоединиться к группе](https://jq.qq.com/?_wv=1027&k=5wXf4Zq), если у вас есть вопросы, их будут отвечать и решать.
influxdb-orm
распространяется под лицензией MIT и предоставляется бесплатно для использования.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )