stayallive/laravel-eloquent-observable
created, updated, deleted hooks).Observer classes with model-level annotations (e.g., $this->onCreated(), $this->onUpdated()).replicating events may behave unexpectedly.booted events for initialization.User vs. LegacyAuditLog)?retrying events).Newsletter, ApiKey).// Before (Observer)
class UserObserver {
public function created(User $user) { ... }
}
// After (JIT)
class User extends Model {
protected static function boot() {
static::created(function ($user) {
// Moved logic here
});
}
}
onCreated(), onUpdated(), etc., methods for cleaner syntax.laravel-debugbar).laravel-audit, spatie/activitylog). May need updates to support JIT.Observer::first()/last() calls with model-specific logic or middleware.Model::fireModelEvent()).Model::booted events to ensure no models are unexpectedly skipped.on{Event}() methods).debugbacktrace() in listeners for debugging.app['events']->listen() for centralized event logging.boot() methods.updated triggering another updated).boot() to check for duplicate listeners.User events fail, check app/Models/User.php for onUpdated()."config('eloquent.observable.cache_models')).retrying/failed events may increase query count.| Failure Scenario | Impact | Mitigation |
|---|---|---|
| JIT listener throws unhandled exception | Silent failure or 500 error. | Wrap listeners in try-catch; log to Sentry. |
Model boot fails (e.g., missing boot()) |
Listeners never register. | Add boot() stubs for all models. |
| Recursive event loops | Stack overflow or infinite retries. | Add depth counters or use static checks. |
| Queue job dispatches miss listeners | Lost events (e.g., created). |
Fall back to global observers for queues. |
| Laravel upgrade breaks compatibility | Package no longer works. | Fork or abstract event handling |
How can I help you explore Laravel packages today?