bavix / laravel-clickhouse
ClickHouse 的 Eloquent 模型
3.0.3
2024-04-01 18:39 UTC
Requires
- php: ^8.2
- ext-json: *
- laravel/framework: ^10.0|^11.0
- the-tinderbox/clickhouse-builder: ^6.1
Requires (Dev)
- driftingly/rector-laravel: ^1.0
- ergebnis/phpstan-rules: ^2.1
- fakerphp/faker: ^1.23
- infection/infection: ~0.27
- larastan/larastan: ^2.8
- mockery/mockery: ^1.6
- nunomaduro/collision: ^8.0
- orchestra/testbench: ^9.0
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.5
- rector/rector: ^1.0
- symplify/easy-coding-standard: ^12.1
README
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();
支持者