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

Dwh Query Doctrine Bundle Laravel Package

watafactory/dwh-query-doctrine-bundle

Symfony bundle that integrates the DWH Query library with Doctrine, providing configuration and integration glue for building and running data warehouse queries in Doctrine-based applications.

View on GitHub
Deep Wiki
Context7

Getting Started

This is the initial v1.0.0 release, so there is no migration path or prior API to reconcile. Treat it as a greenfield dependency and verify the basics before building on it.

  1. Check compatibility first. Read the package's composer.json for php and illuminate/* constraints. Confirm they match your app's Laravel and PHP versions before requiring it.
  2. Install and discover.
    composer require vendor/package:1.0.0
    
    Laravel package auto-discovery should register the service provider. Confirm with:
    php artisan about
    php artisan package:discover
    
  3. Look for publishable assets. Check whether the package ships config, migrations, or views:
    php artisan vendor:publish --provider="Vendor\Package\PackageServiceProvider"
    
    Inspect the published config file first — it is the fastest way to understand the package's surface area.
  4. First use case. Wire the package into a single, low-risk entry point — one route, one artisan command, or one queued job — rather than across the whole app. Verify the happy path and one failure path before expanding.

Since this is the first release, there is no established community guidance yet. The package's README, service provider, and config file are your primary documentation.

Implementation Patterns

Config-first integration. Publish the config and drive behavior from config/package.php plus environment variables. Avoid hardcoding values the package expects to read from config; it keeps test and production behavior aligned.

Inject, don't reach for facades. If the package exposes a facade, prefer resolving its underlying contract via the container in your own services:

public function __construct(private PackageContract $package) {}

This keeps your domain code swappable and makes tests trivial. Reserve facades for controllers and one-off scripts.

Wrap it in a thin adapter. Even at v1.0.0, isolate the package behind your own small service class or interface. You get a single place to adapt when the API shifts, and a single place to mock in tests.

Use it at the edges of the request lifecycle. Typical day-to-day leverage points:

  • A queued job that calls the package and is retried independently.
  • A scheduled command wrapping the package's operation.
  • A form request / validation rule if the package provides one.
  • A dedicated route or controller action for the first integration, expanded later.

Test against it directly. Write one feature test that exercises the real package, plus unit tests that mock your adapter. The real-package test is your regression net for future releases, since no upgrade guide exists yet.

Pin precisely. Use "vendor/package": "1.0.0" rather than ^1.0 until you have seen how the maintainer versions breaking changes.

Gotchas and Tips

First releases are API-unstable. A 1.0.0 tag signals intent, not a track record. Pin the exact version, and re-read the README diff on every bump — there is no changelog history to lean on.

Config caching bites after publishing. If behavior does not change after editing the published config:

php artisan config:clear
php artisan config:cache

This is the most common "the package is broken" false alarm.

Auto-discovery can silently fail. If the package's classes are not found or its provider never boots, check that the provider is listed in bootstrap/providers.php (Laravel 11+) or config/app.php, then run composer dump-autoload. Provider registration order matters if the package depends on another service being bound first.

vendor:publish can overwrite your edits. Use --force deliberately, and prefer publishing only the specific tag you need (--tag=config) rather than everything.

Debugging checklist, in order:

  1. app()->bound(PackageContract::class) — is it actually registered?
  2. config('package') — did your config load, or is it null?
  3. Is the package swallowing exceptions? Check its logging channel and your storage/logs/laravel.log.
  4. Reproduce outside the app with a tinker session to isolate framework wiring from package logic.

Extension points to look for early. Contracts and interfaces you can rebind, events the package dispatches (listen rather than fork), and any macroable classes. Extending through these is far cheaper than patching vendor code.

Migrations and data. If the package ships migrations, run them in a transaction on a staging copy first. There is no rollback guidance yet, so confirm the down() methods are real before trusting them in production.

Establish your own upgrade ritual now. Snapshot the current behavior in tests, record the exact installed version in your lockfile, and diff the README and composer.json constraints on each release. With no prior assessment or changelog history, your test suite is the only reliable safety net.

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.
snowsoft/faker
meditationsteps/blogetc
animalyoung/laravel-influxdb
onix-solutions/sms-telera
lonely-lights/prosetta
oxygen/data
oxygen/core
jengo/base
xiloryx/log-collector
a21ns1g4ts/filament-stripe
la-php/laravel-admin
artisan-build/community-prompts
vleroy/smart
ayles-software/laravel-australian-public-holidays
cboxdk/laravel-id-spatie
cboxdk/laravel-id-billing
cboxdk/laravel-id-billing-bridge
simple-as-fuck/php-performance-log
hsluv/hsluv
seampact/codegen