๐Ÿ‹๏ธ
Lift for Laravel
View on GitHub
  • ๐Ÿ‹๏ธLift for Laravel
  • ๐Ÿš€Getting Started
    • Installation
    • Changelog
  • ๐Ÿ› ๏ธAttributes
    • Cast
    • Column
    • Config
    • DB
    • Events
    • Fillable
    • Hidden
    • Ignore Properties
    • Immutable
    • Primary Key
    • Relationships
    • Validation
    • Watch
  • ๐ŸงชMethods
    • castAndCreate
    • castAndFill
    • castAndSet
    • castAndUpdate
    • createValidationMessages
    • createValidationRules
    • customColumns
    • defaultValues
    • immutableProperties
    • updateValidationMessages
    • updateValidationRules
    • validationMessages
    • validationRules
    • watchedProperties
  • ๐Ÿค–Commands
    • lift:migration
Powered by GitBook
On this page
  • Listener
  • API
  • Observer
  • API
  • Dispatches
  • API

Was this helpful?

  1. Attributes

Events

PreviousDBNextFillable

Last updated 1 year ago

Was this helpful?

Lift provides three attributes to help you manage your model's events.

Listener

The Listener attribute allows you to register a listener function for model events.

A more convenient way of registering a listener function "replacing" laravels event closures for eloquent models, more info

use Illuminate\Database\Eloquent\Model;
use WendellAdriel\Lift\Attributes\Events\Listener;
use WendellAdriel\Lift\Lift;

final class Product extends Model
{
    use Lift;


    #[Listener]
    public function onCreated(Product $product) {
    	Log::info("Product {$product->name} has been created.");
    }
}

API

#[Listener(event: 'created', queue: true)]

event needs to be one of Laravel's model event e.g: 'created', 'creating', 'updated'. If you set queue to true your handler will be executed async by Laravel's queue system.

โš ๏ธ If your function name is equal to the event name prefixed with "on" like onSaving or onDelete you don't need to specify the event name with the Listener Attribute

Observer

The Observer attribute allows you to register a observer class for model events.

use Illuminate\Database\Eloquent\Model;
use WendellAdriel\Lift\Attributes\Events\Observer;
use WendellAdriel\Lift\Lift;


#[Observer(ProductObserver::class)]
final class Product extends Model
{
    use Lift;

}

API

#[Observer(string $observer)]

Dispatches

use Illuminate\Database\Eloquent\Model;
use WendellAdriel\Lift\Attributes\Events\Observer;
use WendellAdriel\Lift\Lift;


#[Dispatches(ProductSaved::class)]
#[Dispatches(ProductHasBeenSetup::class, 'created')]
final class Product extends Model
{
    use Lift;

}

API

#[Dispatches(string $eventClass, string $event = '')]

This is used to register a Observer Class with a model explained in more detail here:

With this attribute you can register a to your model, in theory you could register as many observer classes as you want.

The Dispatches attribute allows you to dispatch custom .

event needs to be one of Laravel's model event e.g: 'created', 'creating', 'updated', but is optional if your contains the event string in its name like ProductSaved, saved will be interpreted as the event.

๐Ÿ› ๏ธ
Laravel Docs: Eloquent Closures
Laravel Docs: Eloquent Observers
observer
Laravel Events
eventClass