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

Mssql Bundle Legacy Laravel Package

mrmitch/mssql-bundle-legacy

Legacy MSSQL bundle for Laravel/PHP, providing SQL Server driver integration and configuration for older framework versions. Helps maintain legacy apps that still rely on Microsoft SQL Server connections.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Evidence base / confidence. This assessment is derived from a single release-note line (require \doctrine/common:*``) with no prior assessment and no repository metadata. Confidence is low; the recommendations below are contingent on verifying the actual composer.json diff. The release is nonetheless material because it introduces a new hard runtime dependency in a minor version bump, which is the single most consequential class of change a composer package can ship.

Architecture fit. doctrine/common is the legacy shared foundation of the Doctrine DBAL/ORM stack, not an idiomatic Laravel/Eloquent dependency. If the package only needs a small utility (e.g. ClassUtils, comparators, or a handful of collection helpers), pulling the full doctrine/common graph is architecturally disproportionate — those helpers now live in the narrower doctrine/persistence and doctrine/collections packages. If the package genuinely bridges to Doctrine ORM/DBAL, the dependency is legible but should be declared against the specific artifact used, not the meta-package. Fit verdict: acceptable only if the usage is real and narrow-scoped.

Integration feasibility. Composer-level resolution is straightforward — the package is public and doctrine/common is widely mirrored. The blocker is the constraint itself: * is an unbounded, unversioned contract. It defeats semver, permits any past or future major (including a hypothetical 4.x with removed APIs), and makes composer update behaviour non-deterministic across teams and dates. For a Laravel package, this also means the dependency can silently conflict with doctrine/dbal versions used by migration tooling (->change(), column introspection) in the host application. A properly scoped constraint (^2.13 || ^3.0) would reduce this to a routine review.

Technical risk. Rated medium-high, with three distinct exposures:

  1. Semver/upgrade risk — adding a required dependency mid-minor can break existing installs: consumers with pinned doctrine/* versions may hit resolution failures on composer update, and composer require of the new version may fail outright in Doctrine-heavy apps. This is a de facto breaking change regardless of the version number.
  2. Supply-chain and security risk — with *, every published doctrine/common version (and its transitive tree: doctrine/persistence, doctrine/collections, and in 2.x the event manager) becomes an allowed attack and CVE surface with no maintainer gate.
  3. Lifecycle risk — doctrine/common has been progressively reduced and de-emphasised by Doctrine in favour of the split packages. Dependending on a shrinking meta-package with an unpinned range is a poor long-term bet.

Key questions for the maintainer.

  • Which specific classes/functions from doctrine/common does the package call? Is there a narrower package that provides them?
  • Is this a require or require-dev? The note says require — confirm, and confirm whether the dependency is optional at runtime (suggest) and could be guarded behind a feature flag or bridge/sub-package.
  • Why * rather than a bounded range? Is there a PHP-version compatibility reason that prevented a proper constraint?
  • What is the supported PHP/Laravel matrix, and does the allowed range admit versions incompatible with it?
  • Is there a CHANGELOG entry, UPGRADE note, or CI run for --prefer-lowest and --prefer-stable?

Integration Approach

Stack fit. Laravel 9–11 / PHP 8.1+ / Composer 2. doctrine/common is absent from the default Laravel skeleton, so this adds net-new install footprint for teams that deliberately avoid Doctrine. Confirm the package does not assume a Doctrine EntityManager is present — a hard dependency that is only conditionally consumed is the worst of both worlds (install cost, no capability guarantee).

Migration path (2.1.x → 2.2.0). Treat as a dependency-change release, not a feature release:

  1. Diff composer.json and composer.lock between tags before adopting.
  2. In a scratch branch, run composer update <package> --with-dependencies on a copy of the real application lock file and inspect the full transitive diff, not just the direct requirement.
  3. Run the suite against --prefer-lowest and --prefer-stable to probe both ends of the wildcard.
  4. If adopting is unavoidable, constrain from the consumer side with an explicit doctrine/common requirement in the root composer.json — a root-level pin overrides the package's * and restores determinism. Alternatively use conflict entries to fence off known-bad majors.

Compatibility. The wildcard resolves to the highest available version by default, so effective behaviour drifts with Packagist state rather than with the package's version. Note that doctrine/common 2.x and 3.x differ substantially in scope and PHP floor; a * constraint means two consumers on the same package version can run materially different code. Verify no duplicate-instance problems (Doctrine annotations/registry singletons) in apps already carrying doctrine/dbal.

Sequencing. (1) Confirm actual usage and constraint rationale with the maintainer. (2) Root-level pin in the consuming application. (3) Dependency-resolution CI job on a schedule (weekly) to catch drift. (4) Stage in one canary service. (5) Fleet rollout, keeping 2.1.x pinned as the rollback target until the constraint is narrowed. If the maintainer ships a bounded constraint in a follow-up, re-evaluate downward.

Operational Impact

Maintenance. Ownership of the added dependency sits with the Doctrine team, not the package author, and doctrine/common's direction is consolidation/removal — a maintenance liability the consuming team inherits without a say. An unpinned range also means the package author has effectively delegated upgrade control to consumers, which in practice means nobody owns it. Budget a recurring line item for constraint auditing.

Support. Failure signals split sharply by mode: resolution failures are loud and cheap to diagnose; runtime type/interface errors from an unexpected major are quiet and expensive. Neither routes naturally to Laravel community channels — expect to escalate to Doctrine upstream, where the package's usage pattern is not a supported concern.

Scaling. Negligible for request-path performance if only static utilities are used. Material only if the dependency pulls Doctrine's event manager, annotation reader, or proxy generation into bootstrap: measurable autoload/opcache classmap growth and per-request memory on high-throughput PHP-FPM. Worth a one-off benchmark before fleet-wide adoption; irrelevant for queue/CLI-heavy workloads.

Failure modes. (a) An unrelated composer update breaks a deployment pipeline via a newly introduced transitive conflict. (b) Silent drift to a breaking major between builds. (c) Security advisory against any version in the permitted range forces emergency root-level overrides across every consuming repo. (d) Divergent lock files between developer machines and CI producing non-reproducible builds. (e) Duplicate Doctrine versions in the graph causing class-identity surprises. Mitigations (a), (b), (d) collapse to one action: pin at the root.

Ramp-up. Low absolute cost, but non-zero and unbudgeted: engineers must reason about a Doctrine-adjacent surface they did not choose to adopt, and the package's own documentation likely does not cover the dependency's semantics. Roughly a half-day for a senior engineer to audit, document, and pin — worth doing once centrally rather than per team.

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