lucasacoutinho/clickhouse-laravel
ClickHouse integration for Laravel that connects your app to the ClickHouse columnar database using familiar query builder and Eloquent-style syntax, making it easy to run fast analytics queries and store large volumes of event data alongside your existing application.
Architecture fit
config/*.php + .env convention. For a TPM this is a positive signal: tuning knobs are exposed through the same mechanism as database, queue, and cache settings, which means existing deployment templates, secret managers, and config-drift tooling apply unchanged.Integration feasibility
composer require, publish config, set two environment variables, and the feature is live. There is no schema migration, no new infrastructure beyond the ClickHouse endpoint itself, and no required changes to existing models unless the team wants to dual-write.Technical risk
env() returns an empty string for a key defined as empty, which casts to 0 under a naive integer cast. Whether that is caught by the positive-integer check, or silently disables the limit, is unconfirmed.Key questions
.env changes require a full restart.Stack fit
.env/secrets tier as DB_* and QUEUE_*, and should be present in every environment's template, including local.Migration path
vendor:publish --force) or manually patched to replace the literal integers with env() calls. Because this arrives in a patch release, it will likely be pulled in by an unpinned composer update — flag this for whoever owns dependency hygiene.Compatibility
composer.json before committing. The env() helper and config-publishing pattern are stable across Laravel 8–11, so the risk here is low but non-zero.php artisan config:cache) should be verified: cached config freezes the resolved values, so .env edits after a cache warm will not take effect. This is a standard Laravel behaviour but is a frequent source of "the tuning didn't apply" incidents.Sequencing
max_buffered_bytes from the per-worker memory budget, not from the library default. Set max_buffered_rows as the secondary guard.Maintenance
Support
.env locally, or omits the variables locally, and observes different flush behaviour than production. Documenting the defaults in the team wiki removes most of this.Scaling
Failure modes
0 and being treated as "no limit" instead of "invalid" would be the worst outcome. Confirm this is explicitly rejected.Ramp-up
How can I help you explore Laravel packages today?