bavix/laravel-clickhouse

ClickHouse 的 Eloquent 模型

3.0.3 2024-04-01 18:39 UTC

This package is auto-updated.

Last update: 2024-09-10 21:44:29 UTC


README

Latest Stable Version License composer.lock

Laravel Clickhouse - ClickHouse 的 Eloquent 模型。

  • 供应商: bavix
  • 包名: laravel-clickhouse
  • Composer: composer require bavix/laravel-wallet-uuid

重要

我建议使用标准的 postgres/mysql 接口连接 clickhouse。更多详情请见: https://clickhouse.ac.cn/docs/en/interfaces/mysql

实现提供现状。进一步工作仅通过贡献者进行。添加了 linters、测试和更多。为了方便您发送 PR。

开始使用

$ composer require bavix/laravel-clickhouse

然后,将上述代码添加到您的 config/app.php 文件的 providers 部分

Bavix\LaravelClickHouse\ClickHouseServiceProvider::class,

并在您的 config/database.php 文件中添加新的连接。例如:

'connections' => [
    'bavix::clickhouse' => [
        'driver' => 'bavix::clickhouse',
        'host' => '',
        'port' => '',
        'database' => '',
        'username' => '',
        'password' => '',
        'options' => [
            'timeout' => 10,
            'protocol' => 'https'
        ]
    ]
]

或者,如果 ClickHouse 运行在集群中,则如下所示:

'connections' => [
    'bavix::clickhouse' => [
        'driver' => 'bavix::clickhouse',
        'servers' => [
            [
                'host' => 'ch-00.domain.com',
                'port' => '',
                'database' => '',
                'username' => '',
                'password' => '',
                'options' => [
                    'timeout' => 10,
                    'protocol' => 'https'
                ]
            ],
            [
                'host' => 'ch-01.domain.com',
                'port' => '',
                'database' => '',
                'username' => '',
                'password' => '',
                'options' => [
                    'timeout' => 10,
                    'protocol' => 'https'
                ]
            ]
        ]
    ]
],

然后创建模型

<?php

use Bavix\LaravelClickHouse\Database\Eloquent\Model;

class Payment extends Model
{
    protected $table = 'payments';
}

并使用它

Payment::select(raw('count() AS cnt'), 'payment_system')
    ->whereBetween('payed_at', [
        Carbon\Carbon::parse('2017-01-01'),
        now(),
    ])
    ->groupBy('payment_system')
    ->get();

支持者

Supported by JetBrains