staudenmeir/laravel-cte
Adds Common Table Expression (CTE) support to Laravel’s query builder and Eloquent. Build WITH and WITH RECURSIVE queries, materialized CTEs, custom columns and cycle detection, plus CTEs for insert/update/delete. Works across major databases (MySQL, Postgres, SQLite, SQL Server, Oracle).
composer require, optional trait for Eloquent). No schema changes required.laravel-adjacency-list for hierarchical models).| Risk Area | Severity | Mitigation |
|---|---|---|
| Database feature gaps | High | Validate target DB supports CTEs (e.g., MySQL 8+). Test cycle detection if using MariaDB/PostgreSQL. |
| Performance overhead | Medium | Materialized CTEs may increase memory usage; benchmark recursive queries. |
| Query complexity | Medium | CTEs can obscure SQL for junior devs; document usage patterns. |
| Lumen/Oracle edge cases | Low | Follow package docs for manual builder setup; test thoroughly. |
| PHP 8.4+ compatibility | Low | Package defaults to PHP 8.4; ensure CI/CD covers target PHP versions. |
with() + manual loops) or augment it?toSql()) be handled for CTE-heavy applications?laravel-adjacency-list for hierarchical models.withExpression() for subqueries).withRecursiveExpression().laravel-adjacency-list for hierarchical models.| Component | Compatibility | Notes |
|---|---|---|
| Laravel 5.5–13.x | ✅ Full support | Version-specific packages available. |
| Eloquent | ✅ With QueriesExpressions trait (L5.5–5.7) or auto-included (L5.8+) |
|
| Lumen | ✅ Manual builder setup required | Follow package docs. |
| Oracle/SingleStore | ✅ Custom builder required | Test thoroughly. |
| PHP 8.1+ | ✅ Required (package defaults to 8.4) | Adjust composer.json constraints if needed. |
| MySQL < 8.0 | ❌ Unsupported | Requires upgrade. |
| MariaDB < 10.2 | ❌ Limited CTE support | Cycle detection requires 10.5.2+. |
withExpression().with() + loops) to withRecursiveExpression().toSql() to inspect generated CTE queries.EXPLAIN ANALYZE in PostgreSQL).EXPLAIN.| Failure Scenario | Impact | Mitigation |
|---|---|---|
| Unsupported database | Queries fail silently or incorrectly. | Validate DB compatibility early; use feature flags for uns |
How can I help you explore Laravel packages today?