Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Eloquent Joins Laravel Package

tjbp/eloquent-joins

Eloquent Joins adds relationship-aware join helpers to Laravel's query builder, letting you join tables through model relations and reuse constraints without hand-writing ON clauses. A small package that keeps joined queries readable and DRY.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Cross-relationship filtering and sorting in list/API endpoints. The package's core value is letting you sort and filter a parent resource by columns on a related table (e.g. "sort orders by customer name", "filter projects by client tier") without hand-writing joins. This is a recurring, high-visibility product requirement in admin panels, reporting screens, and public APIs — worth deciding once rather than re-solving per feature.
  • Reporting and dashboard feasibility. Whether "build a self-serve report builder" or "internal ops dashboard with multi-table filters" is a small feature or a multi-sprint effort depends heavily on whether the query layer can express relationship-level joins ergonomically. This package is one candidate for that capability; treat it as an input to scoping conversations, not as the decision itself.
  • Performance-budget decisions on read-heavy endpoints. Relationship joins are often adopted to eliminate N+1 queries and reduce round-trips on index pages. If the team's alternative is eager-loading plus in-PHP sorting, that's a latency and memory cost that should be an explicit product tradeoff (page load SLAs, pagination correctness).
  • Build vs. buy for query-layer plumbing. A 17-star, archived package is not a "buy" in any commercial sense — it's a "borrow the idea." The real decision this surfaces is whether to (a) invest a small amount of engineering time in an internal join helper, (b) adopt an actively maintained alternative from the ecosystem, or (c) lean on Laravel's native query builder and accept more verbose call sites.
  • Roadmap sequencing for filtering/sorting infrastructure. If multiple roadmap items ("advanced search", "saved views", "export to CSV with cross-entity columns", "partner-facing API") all depend on relationship joins, that's evidence for a dedicated platform task that unblocks several features at once — a classic sequencing decision PMs own.
  • Licensing and distribution strategy. GPL-3.0 is a genuine product decision, not just a legal footnote: it materially constrains any scenario where the application is distributed to customers (on-premise, appliance, plugin, or white-label). If distribution is on the roadmap, this package's license becomes a product constraint early.

When to Consider This Package

Consider it (cautiously, as a reference implementation rather than a dependency) only when all of the following hold:

  • The application is internal-only or network-served SaaS where GPL-3.0 distribution obligations are unlikely to be triggered, and legal has confirmed as much in writing.
  • The team is on an older Laravel version the package was actually written against, and no upgrade is planned within the dependency's lifetime.
  • The need is narrow and stable — a handful of list endpoints needing relationship sorting/filtering, not an evolving multi-tenant query DSL.
  • You are prepared to fork and vendor the code into your own repository, taking ownership of maintenance, security review, and version compatibility. Treat it as a code snippet you inherit, not a package you depend on.
  • Someone has read the implementation and confirmed it composes safely with your existing scopes, soft deletes, and pagination strategy.

Look elsewhere — or build a thin internal helper — when:

  • Maintenance matters. The repository is archived: no bug fixes, no security patches, no compatibility work for current or future Laravel releases. Any dependency on it is technical debt on day one.
  • The license conflicts with your distribution model. GPL-3.0 is atypical for the Laravel ecosystem and is frequently a blocker for commercially distributed software. If that's your model, stop here.
  • Modern alternatives cover the need. Laravel's native query builder, whereHas/with/withAggregate, and mainstream packages for filtering and nested relationships (e.g. the Staudenmeir relationship packages, query-builder helpers used with filtering/sorting libraries) are actively maintained and permissively licensed. The capability gap this package filled has largely closed.
  • Adoption signal is thin. 17 stars and a low composite score mean essentially no peer review and no community safety net. Absent a specific reason to trust it, the default should be to read it for ideas and reimplement.
  • You need multi-tenant safety, row-level authorization, or query auditing. A low-traffic archived package will not have been hardened against the edge cases your security posture requires.

Recommendation: do not adopt as a dependency. Use it as design input, and if the join-helper capability is genuinely on the roadmap, scope a small internal implementation or select a maintained, permissively licensed alternative.

How to Pitch It (Stakeholders)

To executives: This is a tiny, archived, GPL-licensed open-source utility that makes it easier to sort and filter lists by data from related tables. I'm not recommending we adopt it — the maintenance risk and license are both disqualifying for anything we distribute. But the problem it solves is real and recurring: cross-entity filtering shows up in our admin tooling, reporting, and API roadmap. I'm recommending we treat that capability as a small platform investment rather than solving it ad hoc in each feature, which reduces duplicate work and keeps page performance predictable.

To engineering: Treat tjbp/eloquent-joins as a reference design, not a dependency. It's archived, effectively unsupported, and GPL-3.0 — a poor fit for our licensing posture and our Laravel upgrade path. The underlying need (relationship-level joins for filtering and sorting) is legitimate and worth a bounded internal effort: either a thin, tested query helper we own, or a maintained permissive alternative from the ecosystem. Please evaluate both against our current framework version before we commit roadmap items that assume this capability.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels