Laravel Clickhouse
Laravel Clickhouse - Eloquent model for ClickHouse.
- Vendor: bavix
- Package: Laravel Clickhouse
- Version:
- Laravel Version:
6.x
,7.x
,8.x
- PHP Version: 7.2+
- Composer:
composer require bavix/laravel-clickhouse
⚠️ If you are using php 8 andthe-tinderbox/clickhouse-*
author hasn't added support yet, then connect mine.composer req bavix/clickhouse-php-client
composer req bavix/clickhouse-builder
Get started
$ composer require bavix/laravel-clickhouse
Then add the code above into your config/app.php file providers section
Bavix\LaravelClickHouse\ClickHouseServiceProvider::class,
And add new connection into your config/database.php file. Something like this:
'connections' => [
'bavix::clickhouse' => [
'driver' => 'bavix::clickhouse',
'host' => '',
'port' => '',
'database' => '',
'username' => '',
'password' => '',
'options' => [
'timeout' => 10,
'protocol' => 'https'
]
]
]
Or like this, if clickhouse runs in cluster
'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'
]
]
]
]
],
Then create model
<?php
use Bavix\LaravelClickHouse\Database\Eloquent\Model;
class Payment extends Model
{
protected $table = 'payments';
}
And use it
Payment::select(raw('count() AS cnt'), 'payment_system')
->whereBetween('payed_at', [
Carbon\Carbon::parse('2017-01-01'),
now(),
])
->groupBy('payment_system')
->get();
Supported by