Skip to content

cooda/laravel-clickhouse

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Laravel Clickhouse

Build Status StyleCI Coverage Status

Package Rank Latest Stable Version Latest Unstable Version License composer.lock

Laravel Clickhouse - Eloquent model for ClickHouse.

  • Vendor: bavix
  • Package: Laravel Clickhouse
  • Version: Latest Stable 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 and the-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

Supported by JetBrains

About

Eloquent model for ClickHouse

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%