обратные вызовы модели laravel после сохранения, перед сохранением и т. д.

Есть в Laravel такие обратные вызовы, как:

afterSave() beforeSave() etc 

Я искал, но ничего не нашел. Если таких вещей нет – лучший способ их реализации?

Благодаря!

На самом деле, Laravel имеет реальный обратный вызов до | после сохранения | обновить | создать некоторую модель. Проверь это:

https://github.com/laravel/laravel/blob/3.0/laravel/database/eloquent/model.php#L362

EventListener, как сохраненные и сохраняющие, являются настоящими обратными вызовами

 $this->fire_event('saving'); $this->fire_event('saved'); 

как мы можем работать с этим? просто назначьте его этому примеру eventListener:

  \Laravel\Event::listen('eloquent.saving: User', function($user){ $user->saving();//your event or model function }); 

Лучший способ достичь до и после сохранения обратных вызовов для расширения функции save() .

Вот краткий пример

 class Page extends Eloquent { public function save(array $options = []) { // before save code parent::save(); // after save code } } 

Итак, теперь, когда вы сохраняете объект страницы, его вызов вызывает функцию save() которая включает функцию parent::save() ;

 $page = new Page; $page->title = 'My Title'; $page->save(); 

Добавление в пример для Laravel 4:

 class Page extends Eloquent { public static function boot() { parent::boot(); static::creating(function($page) { // do stuff }); static::updating(function($page) { // do stuff }); } } 

Даже если этот вопрос уже отмечен «принят» – я добавляю новый обновленный ответ для Laravel 4.

Beta 4 из Laravel 4 только что представила события крюка для событий Eloquent save – поэтому вам больше не нужно расширять ядро:

Добавлены методы Model :: create (Closure) и Model :: update (Closure) для подключения к событиям Eloquent save. Поблагодарите Фила Стерджона за то, что он наконец надавил на меня … 🙂

Если вам нужен контроль над самой моделью, вы можете переопределить функцию сохранения и поместить свой код до или после __parent::save() .

В противном случае перед каждой эвакуационной моделью происходит событие, которое оно само сохраняет.

Также есть два события, когда Eloquent сохраняет модель.

"eloquent.saving: model_name" или "eloquent.saved: model_name".

http://laravel.com/docs/events#listening-to-events