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
*/
private $value;
public static function create($id, $name, $time, $value)
{
return new static(compact('id', 'name', 'time', 'value'));
}
/**
* Получить значение времени
*
* @return int|string
*/
public function getTime()
{
return $this->time;
}
/**
* Установить значение времени
*
* @param int|string $time
*
* @return self
*/
public function setTime($time)
{
$this->time = $time;
return $this;
}
/**
* Получить значение ID
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Установить значение ID
*
* @param int $id
*
* @return self
*/
public function setId(int $id)
{
$this->id = $id;
return $this;
}
/**
* Получить значение имени
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Установить значение имени
*
* @param string $name
*
* @return self
*/
public function setName(string $name)
{
$this->name = $name;
return $this;
}
/**
* Получить значение значения
*
* @return int
*/
public function getValue()
{
return $this->value;
}
/**
* Установить значение значения
*
* @param int $value
*
* @return self
*/
public function setValue(int $value)
{
$this->value = $value;
return $this;
}
}
use Yurun\InfluxDB\ORM\InfluxDBManager;
// Настройка клиента с именем test, используя по умолчанию базу данных db_test
InfluxDBManager::setClientConfig('test', '127.0.0.1', 8086, '', '', 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);
Подходит для выборки записей, а не статистических данных
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();
Если возникнут вопросы, они будут решены.
influxdb-orm
распространяется под лицензией MIT и предоставляется бесплатно для использования.
Открытость не требует прибыли, любая сумма — это знак внимания. Жизнь трудна, будем надеяться...
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )