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

Symfony Schedule Entity Clean Bundle Laravel Package

tourze/symfony-schedule-entity-clean-bundle

A Symfony bundle for scheduling automatic cleanup of Doctrine entities. It integrates with Symfony Scheduler to run periodic entity-pruning tasks, helping keep your database tidy through simple configuration and service integration in Symfony applications.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The package is a Symfony bundle, not a Laravel package. It ships as tourze/symfony-schedule-entity-clean-bundle and, based on the naming convention and the maintainer's publication pattern, it is one of a large family of narrowly-scoped Symfony bundles that depend on other tourze/* abstractions (a schedule bundle, entity/Doctrine helpers, and shared contracts). Fit with a Laravel codebase is therefore indirect at best: it assumes Symfony's DI container, bundle extension/config loading, and — most likely — Doctrine ORM entity metadata. Laravel's Eloquent, service container, and scheduler do not satisfy those assumptions. The realistic fit is a Symfony application, or a Laravel shop willing to run it as an isolated sidecar/worker process.

Integration feasibility. Low-to-moderate for a Laravel-first stack; high for a Symfony/Doctrine stack. Two viable paths: (1) run it as a standalone Symfony console worker/container that connects to the same database and performs retention cleanup on a schedule, or (2) reimplement the retention policy as a native Laravel command. Path 2 is usually cheaper than bridging Symfony bundles into Laravel. The bundle appears to be a small amount of logic wrapped in framework plumbing, so reimplementation cost is likely measured in days, not weeks.

Technical risk. Several, in descending order of concern:

  • Scope ambiguity. The 1.1.1 release provides only a changelog compare link with no curated notes. We cannot tell whether the patch touches entity mapping, the cleanup cutoff semantics, or only CI/lint. Treat as non-breaking per semver, but verify before adopting.
  • Vendor and bus-factor risk. Single-maintainer project with an extremely high aggregate release volume across many sibling bundles. Version numbers advance frequently and largely unannotated; releases are a poor signal of intent here.
  • Undefined "clean" semantics. The package name implies deletion or archival of schedule entities past a threshold. Retention/deletion logic is high-consequence: off-by-one on the cutoff window, timezone handling, and whether deletes cascade to dependent records must all be confirmed by reading source, not by reading release notes.
  • Dependency drift. Transitive tourze/* and Doctrine version constraints may not resolve cleanly alongside an existing Laravel or Symfony dependency graph.
  • Test coverage unknown. No coverage, CI, or static-analysis signal is visible from the release data.

Key questions. (1) What did 1.1.1 actually change — code, dependencies, or metadata only? (2) Is the cleanup operation soft-delete, hard-delete, or archive, and is it transactional? (3) Does it require Doctrine entities, or does it operate on a table name/config? (4) What are the supported Symfony/PHP/Doctrine version bounds? (5) Is there a chunking/batch-size control for large tables? (6) Is there any documented retention-policy contract, or is policy hardcoded? (7) What is the licensing and long-term maintenance posture?

Recommendation for 1.1.1. No adoption-blocking change is evidenced. This appears to be a routine patch with a machine-generated changelog and no API surface description. Do not treat the release as a green light; the open questions above are the actual gate.

Integration Approach

Stack fit. Poor for Laravel as a library dependency; acceptable for Symfony. If the surrounding application is Laravel, the pragmatic integration is not "install the package" but "adopt the retention behavior." Pull the source, read it in an afternoon, and decide between a sidecar service and a port.

Migration path. Sequence it as: (a) vendor review — read the 1.1.0→1.1.1 diff and the bundle's service definition to confirm what it registers and executes; (b) shadow evaluation — run it against a restored copy of the schedules table in a non-production Symfony container; (c) parallel run — execute alongside existing retention jobs with dry-run/logging, compare intended deletions against current behavior; (d) cutover. There is no in-place migration for a Laravel app because there is no prior integration — this would be a first adoption, not an upgrade.

Compatibility. Confirm PHP version floor, Symfony major (likely 6 or 7), and Doctrine ORM/DBAL ranges against the target app. Check that the transitive tourze/* constraints resolve without pinning conflicts. If the target database is shared between a Laravel app and this worker, verify that the entity's table/column mapping matches the existing schema exactly rather than expecting the bundle to own migrations.

Sequencing. Because 1.1.1 is a patch release, no upgrade sequencing is required for existing users — standard practice applies: bump, run the suite, deploy. For new adoption, the sequencing is dominated by the spike and shadow-run, not by the version transition. Pin to an exact version (1.1.1, not ^1.1) given the release cadence and thin changelogs; unpinned ranges on rapidly-iterating single-maintainer packages invite unannounced behavior changes.

Operational Impact

Maintenance. The maintenance burden is bifurcated. The package itself is small and unlikely to need patching often in substance, but it will announce releases often. Each bump demands a diff review to determine relevance — a recurring tax on whoever owns the dependency. Budget roughly a half-day per quarter for triage, plus the initial spike.

Support. Community-only. No visible vendor SLA, commercial backing, or documented support channel. Escalation for a production incident involving data deletion would rest on internal engineers reading source. That is an acceptable posture only if the team has PHP/Symfony fluency in-house.

Scaling. This is the primary operational concern. Retention cleanup against a large schedules table is a bulk destructive operation: it will take locks, hold long transactions if not chunked, generate replication lag, and compete with application traffic. Confirm the presence of batch-size limits and sleep intervals between chunks. If absent, either wrap it in a chunking harness or schedule it in a low-traffic window against a replica-safe path. Cost of a bad run is measured in recovery time and lost rows, not compute.

Failure modes. Ranked by severity: (1) incorrect cutoff window deletes live schedule data — worst case, unrecoverable without backups; (2) unbounded single-statement delete causes lock contention or times out mid-run, leaving partial state; (3) cascade behavior into dependent entities not understood in advance; (4) silent no-op from entity/schema mapping mismatch, giving false confidence that retention is running; (5) timezone mismatch between app server and stored timestamps shifting the effective window by hours. Each needs an explicit mitigation: verified backup/restore drill, chunk size config, foreign-key audit, row-count assertions in monitoring, and UTC-normalized comparisons.

Ramp-up. The code footprint is small, so reading it is fast. The slow part is the surrounding abstraction layer — understanding how the tourze/* bundle family composes, where configuration is injected, and which of the sibling bundles are actually required. For a Laravel team with no Symfony bundle experience, assume one to two days to first productive understanding and three to five days to a confident shadow run. Do not underestimate this: the package is small, but the ecosystem conventions are not.

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.
takashato/laravel-vietqr
aitor24/laralang
kraenzle-ritter/entity-relations
dindigital/din-image
pomirleanu/image-colors
sawmainek/laravel-api-generator
delatbabel/jsonresponses
mouhamedfd/permissions-generator
eduplus/qr
laravel2580/idehelpers
delatbabel/viewpages
anavel/gettext
muhamadrezaar/highcharts
delatbabel/keylists
frankkessler/salesforce-laravel-oauth2-rest
anavel/foundation
wdmtech/enviricons
eii/laravel-captcha
muka/shape-reader
tdt/json