ronan-gloo/laravel-eloquent-observer

该包最新版本(dev-master)没有提供许可证信息。

将 Eloquent 模型的事件分发到模型的实例,或特定类

dev-master 2014-09-06 10:16 UTC

This package is auto-updated.

Last update: 2024-09-15 22:13:20 UTC


README

将 Eloquent 模型的事件分发到模型的实例,或特定类

安装

php artisan bundle:install observer

事件

  • saving: 保存前
  • saved: 保存后
  • updated: 更新后
  • created: 创建后
  • deleting: 删除前
  • deleted: 删除后

用法

1. 在模型内部
class Post extends Eloquent {
    
    /**
     * This method will be run after an update or a creation.
     */
    public function event_saved()
    {
        Log::info(get_class($this).' with title "'.$this->title.'" saved');
    }
    
}
2. 使用观察者
// The Model
class Post extends Eloquent {
    
    public static $observe = array(
        
        // Single observer for a single event
        'saving' => 'Observe_Slug',
        
        // Multiple observers for a single event
        'created' => array('Observe_Log', 'Observe_Mail'),
        
        // Observer with parameters
        'updated' => array('Observe_History' => array('log' => true))
    );
    
}

// Observer
class Observer_Slug extends Observer\Observe {
    
    // Modelfy object before to save it
    public function saving($model)
    {
        model->slug = Str::slug($model->title);
    }
    
    // event with parameters: parameters from model are instance properties here
    public function updated($model)
    {
        if ($this->log == true)
        {
            Do something...
        }
    }
}