1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/yurunsoft-influxdb-orm

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

influxdb-orm

Последняя версия Версия PHP Лицензия IMI

Описание

ORM для временных баз данных InfluxDB, который положит конец отсутствию ORM для InfluxDB.

Основные операции поддерживаются в одном пакете, что позволяет использовать его в окружении php-fpm и Swoole с простым переключением.

Можно использовать во всех традиционных фреймворках и всех фреймворках Swoole!

Composer

Проект можно установить через composer, следуя правилам автоматической загрузки PSR-4. Добавьте следующее содержание в ваш composer.json:

{
    "require": {
        "yurunsoft/influxdb-orm": "^1.1.0"
    }
}

Затем выполните команду composer update, чтобы установить проект.

Использование

Поддержка Swoole

Выполните в событии 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();

Бесплатная техническая поддержка

QQ группа: 17916227 Нажмите, чтобы присоединиться

Если возникнут вопросы, они будут решены.

Операционная среда

Информация о лицензии

influxdb-orm распространяется под лицензией MIT и предоставляется бесплатно для использования.

Донат

Открытость не требует прибыли, любая сумма — это знак внимания. Жизнь трудна, будем надеяться...

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

ORM для InfluxDB — временной базы данных, который положит конец эре отсутствия ORM для InfluxDB. QQ группа: 17916227 Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/yurunsoft-influxdb-orm.git
git@api.gitlife.ru:oschina-mirror/yurunsoft-influxdb-orm.git
oschina-mirror
yurunsoft-influxdb-orm
yurunsoft-influxdb-orm
master