<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          influxdb-orm時(shí)序數(shù)據(jù)庫(kù) InfluxDB 的 ORM

          聯(lián)合創(chuàng)作 · 2023-09-30 01:41

          influxdb-orm 是一個(gè)用于 InfluxDB 時(shí)序數(shù)據(jù)庫(kù)的 ORM,終結(jié)沒(méi)有 InfluxDB ORM 的時(shí)代。

          常用操作一把梭,支持 php-fpm、Swoole 環(huán)境,一鍵輕松切換。

          可以用于所有傳統(tǒng)框架、所有 Swoole 框架中!

          Composer

          本項(xiàng)目可以使用composer安裝,遵循psr-4自動(dòng)加載規(guī)則,在你的 composer.json 中加入下面的內(nèi)容:

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

          然后執(zhí)行 composer update 安裝。

          使用

          Swoole 支持

          在 WorkerStart 事件中執(zhí)行:

          \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'));
              }
          
              /**
               * Get the value of time
               *
               * @return int|string
               */ 
              public function getTime()
              {
                  return $this->time;
              }
          
              /**
               * Set the value of time
               *
               * @param int|string $time
               *
               * @return self
               */ 
              public function setTime($time)
              {
                  $this->time = $time;
          
                  return $this;
              }
          
              /**
               * Get the value of id
               *
               * @return int
               */ 
              public function getId()
              {
                  return $this->id;
              }
          
              /**
               * Set the value of id
               *
               * @param int $id
               *
               * @return self
               */ 
              public function setId(int $id)
              {
                  $this->id = $id;
          
                  return $this;
              }
          
              /**
               * Get the value of name
               *
               * @return string
               */ 
              public function getName()
              {
                  return $this->name;
              }
          
              /**
               * Set the value of name
               *
               * @param string $name
               *
               * @return self
               */ 
              public function setName(string $name)
              {
                  $this->name = $name;
          
                  return $this;
              }
          
              /**
               * Get the value of value
               *
               * @return int
               */ 
              public function getValue()
              {
                  return $this->value;
              }
          
              /**
               * Set the value of value
               *
               * @param int $value
               *
               * @return self
               */ 
              public function setValue(int $value)
              {
                  $this->value = $value;
          
                  return $this;
              }
          }
          

          數(shù)據(jù)寫(xiě)入

          use Yurun\InfluxDB\ORM\InfluxDBManager;
          
          // 設(shè)置客戶端名稱為test,默認(rèn)數(shù)據(jù)庫(kù)為db_test
          InfluxDBManager::setClientConfig('test', '127.0.0.1', 8086, '', '', false, false, 0, 0, 'db_test');
          // 設(shè)置默認(rèn)數(shù)據(jù)庫(kù)為test
          InfluxDBManager::setDefaultClientName('test');
          
          // 寫(xiě)入數(shù)據(jù),支持對(duì)象和數(shù)組
          $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);

          數(shù)據(jù)查詢

          // 獲取查詢器
          $query = A::query();
          
          // 常見(jiàn)用法,反正就那一套,不多說(shuō)了
          $query->field('id,name')
                ->from('table')
                ->where([
                    'id'    =>  1
                ])->where('id', '=', 1)
                ->orWhere('id', '=', 1)
                ->order('time', 'desc')
                ->group('id')
                ->limit(0, 10);
          
          // 查詢結(jié)果,與 InfluxDB 官方客戶端一樣用法
          $resultSet = $query->select();
          
          // 查詢結(jié)果轉(zhuǎn)模型,適合用于查詢記錄而不是統(tǒng)計(jì)數(shù)據(jù)
          $model = $resultSet->getModel(A::class);
          
          // 查詢結(jié)果轉(zhuǎn)模型列表,適合用于查詢記錄而不是統(tǒng)計(jì)數(shù)據(jù)
          $list = $resultSet->getModelList(A::class);

          模型快捷查詢

          適合用于查詢記錄而不是統(tǒng)計(jì)數(shù)據(jù)

          use Yurun\InfluxDB\ORM\Query\QueryBuilder;
          
          // 查詢結(jié)果轉(zhuǎn)模型,適合用于查詢記錄而不是統(tǒng)計(jì)數(shù)據(jù)
          $model = A::find(function(QueryBuilder $query){
              $query->where('id', '=', 1)->limit(1);
          });
          
          // 查詢結(jié)果轉(zhuǎn)模型列表,適合用于查詢記錄而不是統(tǒng)計(jì)數(shù)據(jù)
          $list = A::select(function(QueryBuilder $query){
              $query->where('id', '=', 1)->limit(2);
          });
          

          獲取單個(gè)字段值

          $count = A::query()->field('count(value)')->select()->getScalar();
          瀏覽 22
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产一级黄色电影网站 | 视频一区二区77在线 | 国产一级婬乱片A片 | 国产草逼视频 | 99在线视频免费 |