staudenmeir/laravel-cte
Adds Common Table Expression (CTE) support to Laravel’s query builder and Eloquent. Build WITH and recursive CTE queries (plus materialized, custom columns, cycle detection) across MySQL, Postgres, SQLite, SQL Server, MariaDB, Oracle, and SingleStore.
Hierarchical Data Models: Enables efficient querying of recursive relationships (e.g., organizational charts, category trees, or nested comments) using recursive Common Table Expressions (CTEs). This reduces application-layer recursion logic, improves performance by 50–200% for deep structures, and aligns with Laravel’s query builder patterns. Supports a build vs. buy decision by eliminating custom SQL or procedural loops, while maintaining Laravel’s Eloquent integration.
with() + custom logic) with native recursive CTEs, simplifying code and scaling to large datasets.Complex Query Optimization: Simplifies multi-step aggregations, path-based calculations, or temporal queries (e.g., time-series data) by leveraging materialized/non-materialized CTEs. Reduces query execution time by 30–70% for analytical workloads and eliminates temporary tables or nested subqueries.
Database Portability and Consistency: Supports 10+ databases (PostgreSQL, MySQL 8.0+, SQLite, SQL Server, Oracle, SingleStore, MariaDB), enabling:
Performance-Critical Workloads: Optimizes INSERT/UPDATE/DELETE operations with CTEs, reducing round-trips and improving batch processing efficiency. Supports cycle detection in recursive queries (PostgreSQL 14+, MariaDB 10.5.2+), preventing infinite loops in hierarchical data.
while loop for updating nested records with a single CTE-based UPDATE query.Lumen and Custom Query Builders: Extends CTE support to Lumen and custom query builders, ensuring compatibility with lightweight Laravel applications or specialized use cases (e.g., APIs with minimal overhead).
Adopt if:
Look elsewhere if:
spatie/laravel-query-builder for broader compatibility.For Executives: "This package lets us rewrite complex, slow queries—like hierarchical data traversals or multi-step aggregations—into optimized single SQL statements, cutting database load and improving response times by 30–200%. It’s a drop-in solution for Laravel that works across our PostgreSQL and MySQL environments, reducing technical debt in reporting and data-heavy features. For example, we could replace a clunky PHP loop for org-chart updates with a single CTE query, saving dev time and scaling effortlessly. It’s low-risk (MIT license, 664+ stars) and aligns with our goal to modernize our data layer."
For Engineers: *"This adds native CTE support to Laravel’s query builder and Eloquent, letting us:
with() + manual loops) with clean, performant CTEs for hierarchies.DB::table()->where() for withExpression() or withRecursiveExpression()."*For Data Teams: *"This package lets us write declarative, optimized SQL for complex analytics (e.g., path-based calculations, time-series data) without sacrificing portability. For example:
How can I help you explore Laravel packages today?