allesx / laravel-clickhouse
ClickHouse 的 Eloquent 模型
3.0.0
2021-05-25 13:20 UTC
Requires
- php: >=7.1
- ext-json: *
- laravel/framework: 5.8.*
- the-tinderbox/clickhouse-builder: 1.0.*
Requires (Dev)
- fzaninotto/faker: ^1.7
- infection/infection: ~0.15
- mockery/mockery: ^1.0
- phpunit/phpunit: ^6.5
README
Laravel Clickhouse - ClickHouse 的 Eloquent 模型。
- 供应商: allesx
- 包名: Laravel Clickhouse
- 版本:
- Laravel 版本:
5.8.x
- PHP 版本: 7.1.3+
- Composer:
composer require allesx/laravel-clickhouse
开始使用
$ composer require allesx/laravel-clickhouse
然后将上面的代码添加到您的 config/app.php 文件的 providers 部分
Allesx\LaravelClickHouse\ClickHouseServiceProvider::class,
并在您的 config/database.php 文件中添加新的连接。例如
'connections' => [ 'allesx::clickhouse' => [ 'driver' => 'allesx::clickhouse', 'host' => '', 'port' => '', 'database' => '', 'username' => '', 'password' => '', 'options' => [ 'timeout' => 10, 'protocol' => 'https' ] ] ]
或者,如果 ClickHouse 在集群中运行
'connections' => [ 'allesx::clickhouse' => [ 'driver' => 'allesx::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 Allesx\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();