PHP code example of vaslv / eloquent-clickhouse
1. Go to this page and download the library: Download vaslv/eloquent-clickhouse library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
vaslv / eloquent-clickhouse example snippets
'connections' => [
'clickhouse' => [
'driver' => 'clickhouse',
'host' => env('CLICKHOUSE_HOST', '127.0.0.1'),
'port' => env('CLICKHOUSE_PORT', 8123),
'database' => env('CLICKHOUSE_DATABASE', 'default'),
'username' => env('CLICKHOUSE_USERNAME', 'default'),
'password' => env('CLICKHOUSE_PASSWORD', ''),
'prefix' => '',
'settings' => [
// Server settings sent with every query, e.g.:
// 'max_execution_time' => 60,
// 'mutations_sync' => 1, // make update()/delete() wait for the mutation
],
// Optional:
// 'engine' => 'MergeTree', // default table engine for migrations
// 'timeout' => 30, // query timeout, seconds (max_execution_time)
// 'connect_timeout' => 5.0, // connection timeout, seconds
],
],
'clickhouse' => [
// ...
'port' => 8443,
'https' => true,
// 'sslCA' => '/path/to/ca.pem', // custom CA bundle ('ssl_ca' also accepted)
// 'verify' => false, // disable certificate verification (not recommended)
// 'curl_options' => [CURLOPT_SSL_VERIFYHOST => 0], // raw overrides, win over the defaults
],
use Illuminate\Support\Facades\DB;
$rows = DB::connection('clickhouse')
->table('events')
->whereDate('created_at', now()->toDateString())
->get();
DB::connection('clickhouse')->table('events')->where('id', 1)->update(['name' => 'x']);
// ALTER TABLE "events" UPDATE "name" = 'x' WHERE "id" = 1
DB::connection('clickhouse')->table('events')->where('id', 1)->delete();
// ALTER TABLE "events" DELETE WHERE "id" = 1
DB::connection('clickhouse')->table('events')->delete(); // no WHERE
// TRUNCATE TABLE "events" — an unconditional delete truncates instead of mutating
Schema::connection('clickhouse')->create('events', function (Blueprint $table) {
$table->engine('MergeTree'); // default: MergeTree (or the 'engine' config)
$table->uuid('id');
$table->string('name')->default('');
$table->dateTime('created_at', 3);
$table->primary(['created_at', 'id']); // becomes ORDER BY (sorting key)
});
DB::connection('clickhouse')->table('events')->insert([
'id' => 1,
'tags' => ['alpha', 'beta'], // -> ['alpha', 'beta']
'attrs' => ['region' => 'eu'], // -> map('region', 'eu')
]);
DB::connection('clickhouse')->table('events')->where('tags', ['alpha', 'beta'])->get();
DB::connection('clickhouse')->select('SELECT arrayConcat(?, ?) AS merged', [['a'], ['b']]);
$rows = DB::connection('clickhouse')->select('SELECT * FROM events LIMIT 10');
DB::connection('clickhouse')->insert("INSERT INTO events (id, name) VALUES (1, 'test')");
DB::connection('clickhouse')->statement('OPTIMIZE TABLE events FINAL');