iboxs/orm-clickhouse

PHP ClickHouse ORM package

Maintainers

Package info

github.com/iboxs-frame/iboxs-clickhouse-orm

pkg:composer/iboxs/orm-clickhouse

Transparency log

Statistics

Installs: 2

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

0.0.4 2026-08-13 04:10 UTC

This package is not auto-updated.

Last update: 2026-08-14 02:28:00 UTC


README

基于 iboxs ORM 扩展的 ClickHouse HTTP 驱动,实现 Model / Query 风格调用。

特性

  • 复用 iboxs/ormModelQueryDbManager 调用链
  • 通过 ClickHouse HTTP 接口直连,不依赖 ClickHouseDB\\Client
  • 支持常用链式查询:nametablewherefieldorderlimitselectfindvaluecolumn
  • 支持写入:insertinsertAllupdatedelete
  • 支持模型方式调用:Model::where()->select()

配置示例

'clickdb' => [
    'type'            => 'clickhouse',
    'hostname'        => env('clickdb.host'),
    'hostport'        => env('clickdb.port'),
    'database'        => env('clickdb.database', 'default'),
    'username'        => env('clickdb.username', 'default'),
    'password'        => env('clickdb.password', ''),
    'prefix'          => '',
    'https'           => false,
    'timeout'         => 10,
    'connect_timeout' => 5,
    'trigger_sql'     => true,
    'fields_cache'    => false,
    'fields_strict'   => true,
]

模型示例

namespace model\clickmodel;

use model\ClickhouseModel;

class Appuser extends ClickhouseModel
{
    protected $table = 'appuser';
}

调用示例

use model\clickmodel\Appuser;

$list = Appuser::where('app_id', 1001)
    ->field(['app_id', 'user_id', 'event_time'])
    ->order('event_time', 'desc')
    ->limit(20)
    ->select();

$row = Appuser::where('user_id', 9527)->find();
$count = Appuser::where('app_id', 1001)->count();
$value = Appuser::where('user_id', 9527)->value('event_time');
$column = Appuser::limit(10)->column('id');
$sum = Appuser::sum('app_id');
$avg = Appuser::avg('app_id');
$min = Appuser::min('app_id');
$max = Appuser::max('app_id');
$group = Appuser::field('app_id,count(*) as total')->group('app_id')->select();

Appuser::insert([
    'app_id' => 1001,
    'user_id' => 9527,
    'event_time' => date('Y-m-d H:i:s'),
]);

当前约束

  • 通过 HTTP 接口执行,不支持 PDO / 事务语义
  • update / delete 会转换为 ClickHouse 的 ALTER TABLE ... UPDATE/DELETE
  • 不提供自增主键能力,getLastInsID() 恒为 null
  • 表结构读取通过查询 system.columns
  • 组件已改为直接暴露 \iboxs\db\connector\Clickhouse\iboxs\db\builder\Clickhouse,可配合 type => 'clickhouse' 直接使用
  • 已自测通过:select / where select / count / value / column / sum / avg / min / max / grouped select