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

Goat Query Bundle Laravel Package

makinacorpus/goat-query-bundle

Symfony bundle integrating MakinaCorpus Goat Query, a lightweight SQL query builder. Configure database connections and compose fluent, parameterized SELECT, INSERT, UPDATE, and DELETE queries through a clean API, simplifying data access in Symfony applications.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The first thing to flag is a framing mismatch: the brief classifies this as a Laravel/PHP package, but makinacorpus/goat-query-bundle is a Symfony bundle — a DI-extension plus config-tree artifact wired into the Symfony kernel. Laravel has no equivalent extension point, so "fit" for a Laravel stack is close to zero out of the box. Fit for a Symfony application is better in shape but weak in practice: the bundle is an internal component of the Goat CMS ecosystem, and its abstractions (query/filter composition over the persistence layer) are only valuable if you are already inside Goat's conventions.

Integration feasibility. Low. Zero stars, zero dependents, no release history to speak of, and no public documentation surfaced by the repository metadata. For a TPM, the meaningful signal is not the score (0.40) but the dependents count: nobody has bet production on this. The bundle is thin — it wires a query library into the container — so the bulk of the value lives in the underlying goat-query library, not the bundle. That library, not the bundle, is what would need evaluating.

Technical risk.

  • License. GPL-2.0 is a copyleft license. Bundling this into a proprietary SaaS or distributed Laravel app creates real derivative-work exposure. Legal review is a hard gate, not a checkbox. If the code is only consumed over a network in a SaaS context, GPL-2 has no network clause (unlike AGPL), but any distribution of the app triggers source obligations.
  • Abandonment. Single-maintainer-adjacent project, no dependents, no release cadence. There is no security patching path and no upstream to escalate to.
  • Coupling. A Symfony bundle implies Symfony service definitions, a config tree, and a container compilation pass. Porting is a reimplementation exercise, not an installation.
  • Version drift. Unpinned transitive dependencies against modern PHP/Symfony versions are the most likely first failure.

Key questions for the evaluate/no-evaluate decision.

  1. What specific capability are we trying to acquire — a filter/query DSL, a pagination contract, a reporting layer? Name it, then check whether Eloquent, spatie/laravel-query-builder, or a plain Illuminate\Database\Query\Builder composition already covers it.
  2. Is any part of our estate Symfony-based, or is this purely a Laravel context?
  3. Can we extract the framework-agnostic query core from the bundle and consume it as a library, avoiding the Symfony dependency entirely?
  4. What is the GPL exposure under our actual distribution model (hosted vs. shipped)?
  5. Who maintains the underlying goat-query library, and what is its activity level?

Integration Approach

Stack fit. Treat this as not a drop-in. There is no Laravel service provider, no facade, no migration, no config publishing. Three viable stances, in descending order of preference:

  1. Pattern extraction (recommended). Read the source, understand the query-composition model, and reimplement the useful subset against Eloquent or the query builder. Cost is measured in days for a senior engineer; the payoff is no GPL exposure, no Symfony coupling, full ownership.
  2. Isolated sidecar. If there is a genuinely non-trivial capability in Goat Query (complex filter parsing, nested boolean query compilation), stand it up as a separate Symfony/PHP service behind an internal HTTP or message boundary. GPL obligations stay confined to that service; the Laravel app talks to it over an API contract.
  3. Fork and strip. Fork, remove the bundle wrapper, keep the core, vendor it. Highest maintenance burden, and GPL still travels with the fork.

Migration path. None exists, and that is actually informative — with zero dependents there is no community migration story and no prior art to lean on. Any adoption is greenfield, which means we absorb 100% of the integration and debugging cost with no reference implementations to copy.

Compatibility. Symfony service-container semantics, a bundle Extension class, and a config tree do not translate to Laravel's container. A Laravel wrapper would be a hand-written service provider binding manually constructed objects — feasible, but at that point you have written more glue than the bundle provides in value.

Sequencing (if we proceed at all).

  1. Spike (1–2 days). Clone, install, get the bundle booting in a minimal Symfony app, exercise the query API. Determine whether the capability is genuinely differentiated.
  2. License review (parallel). Legal sign-off on GPL-2.0 under our distribution model — this can kill the initiative outright and should run in parallel, not after.
  3. Core extraction PoC (3–5 days). Attempt to consume the query core without the bundle.
  4. Go/no-go. Compare against a spatie/laravel-query-builder or Eloquent-native implementation of the same capability.
  5. Only on a clear win: wrap, test, document, and record the maintenance owner explicitly.

Operational Impact

Maintenance. Assume we own it from day one. There is no upstream to file issues with, no release train to track, no security advisory feed. Budget the fork as a first-class internal dependency: an owner, a vendored copy, and a documented upgrade policy (i.e., "we don't upgrade; we patch").

Support. No community, no Stack Overflow corpus, no commercial backing. Onboarding a new engineer means they read the source. Any production incident debugs into unfamiliar third-party code with no vendor to call — a real pager-duty liability that should be priced into the decision.

Scaling. The bundle itself is a thin wiring layer and will not be the bottleneck. Query throughput and memory are governed by the underlying persistence layer and how the query DSL compiles to SQL — that is where performance review should focus. The Symfony container bootstrap adds a negligible constant cost, irrelevant unless a sidecar service is chosen, in which case a network hop is introduced into the query path and must be measured.

Failure modes.

  • GPL infection discovered post-shipment — highest-severity, highest-likelihood-to-be-expensive.
  • Transitive dependency breakage on PHP or Symfony minor upgrades, surfacing as container compile errors rather than runtime ones (harder to catch in tests that don't boot the full kernel).
  • Container wiring fragility — config-tree schema changes silently alter behavior.
  • Abandonment becomes acute the first time a CVE lands in a transitive dependency and no patch exists.
  • Knowledge concentration — one or two engineers understand the code; departure is a continuity risk.

Ramp-up. The code volume is small; a senior PHP engineer should be productive in the query core within a day or two of source reading. The friction is not complexity, it is the absence of documentation, examples, and tests, plus the mental context switch of Symfony idioms inside a Laravel shop. Realistic estimate: 2–3 engineer-days to reach confident working knowledge, 1–2 weeks to a defensible production integration including the GPL review.

Bottom line. The favorable signal here is the underlying idea, not the artifact. Score 0.40 with zero dependents, zero stars, and a GPL-2.0 license on a Symfony-only bundle is a clear signal to extract the pattern rather than adopt the package. Recommend a time-boxed technical spike plus a parallel license review, with a strong prior toward reimplementing the query-composition capability natively in Laravel.

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.
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource