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

Unobserve Laravel Package

monooso/unobserve

Laravel package for temporarily disabling Eloquent model observers. Unobserve models to run saves, updates, or deletes without triggering observer events, then restore observation easily. Useful for imports, seeding, bulk operations, and other tasks where observer side effects should be skipped.

View on GitHub
Deep Wiki
Context7

Getting Started

v7.0.0 is a platform-jump release, so treat the first step as an environment check rather than a feature tour.

  1. Confirm your runtime can host it. v7 requires PHP 8.3 and Laravel 13. Before composer require, verify:
    • php -v on your machine, in CI images, and in the production Dockerfile/base image.
    • composer show laravel/framework — you must already be on Laravel 13. There is no graceful fallback; Composer will simply refuse to resolve.
  2. Read composer.json first, then the README. The release notes are release-engineering focused (tooling, CI, dev environment), not API focused, so the authoritative list of config keys, published assets, and service-provider bindings still lives in the README and config/ stub. Diff the published config against your existing one after upgrading.
  3. First use case: install into a Laravel 13 app, publish the config (php artisan vendor:publish --provider=...), wire the facade/binding, and exercise the single most common path in a feature test before touching anything else.
  4. If you are contributing or debugging upstream, use ./dev — local development now runs in Podman, with no host PHP or Composer required. That is the fastest way to reproduce issues against a known-good matrix.

Implementation Patterns

Pin deliberately — the support policy changed. v7 supports only the latest major of Laravel going forward, and older majors are no longer maintained. Two viable patterns:

// Laravel 13 app — track the major
"vendor/package": "^7.0"

// Laravel 11/12 app — freeze on the last tag that supported you
"vendor/package": "6.*"

Keep a short comment in composer.json or an ADR noting why the pin exists and which release was the last supported one. This is the single most important operational change in v7.

Upgrade as a dedicated, isolated change. Sequence it as: bump PHP image → bump Laravel → bump this package → run Pint → run the test suite. Doing the PHP/Laravel bump and the package bump in one commit makes bisecting a failure miserable.

Adopt Pint as the new house style. Linting switched to Laravel Pint, so formatting output will differ from whatever the package used before. Run vendor/bin/pint in a separate commit immediately after the upgrade so the reformat noise does not contaminate your actual upgrade diff.

Replace the removed quality gates with your own. Scrutinizer CI and the Git pre-push hook are both gone. If you relied on either:

  • Add a CI job running vendor/bin/pint --test and your static analyser (PHPStan/Larastan) — this is now your responsibility, not upstream's.
  • Reintroduce client-side guarding with CaptainHook, Husky, or a composer script; or better, enforce server-side with branch protection + required checks so it cannot be bypassed with --no-verify.

Mirror the Podman dev environment in CI. ./dev gives you a reproducible container. Point CI at the same image/definition where practical — parity here eliminates a whole class of "works in ./dev, fails in Actions" bugs.

Guard the public surface in tests. On a major bump, write characterization tests around the behaviour you actually depend on (return shapes, exceptions, dispatched events, config keys) before upgrading. That converts an opaque breaking change into a concrete diff.

Gotchas and Tips

  • PHP 8.3 is a hard floor, and it bites in more places than your laptop. Check CI runner images, the production FROM php:x.y line, deploy hooks, and any locally pinned platform.php in composer.json — that last one is a common silent blocker.
  • composer why-not vendor/package 7.0 is the fastest way to diagnose a failed Laravel 13 resolution. Usually it is a transitive illuminate/* constraint or a package stuck on Laravel 12.
  • The "latest major only" policy means no security patches for older majors. Budget an upgrade cadence, or accept that you own the fork. Do not assume the pinned 6.x line will receive fixes.
  • Config republish is not automatic. After a major, diff your published config against the new stub — vendor:publish --force will overwrite local customisations, so publish to a temp path and compare manually.
  • Pint will reformat, not fix. It also does not catch logic issues; do not let it stand in for the static analysis you lost with Scrutinizer.
  • Podman quirks to expect: rootless volume-permission mismatches, and SELinux hosts needing :z/:Z on bind mounts. If ./dev fails on first run, check mount labels before debugging the package.
  • Removed pre-push hook = more broken pushes. Enforce checks server-side; local hooks are advisory and easily skipped.
  • Extension points unchanged in principle, but verify them. Service-provider bindings, config keys, and events are the usual integration seams — confirm each still resolves after the bump, particularly if you were overriding a concrete class via the container.
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.
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core