2016-04-04 4 views
1

Я хочу создать пользовательское событие модели в laravel 5.1.Как создать пользовательские события модели laravel 5.1?

Для e.x. когда обновляется категория статей, я хочу сделать событие и послушать его.

$article = Article::find($id); 
$article->category_id = $request->input('category_id'); 
// fire an event here 

ответ

1

Вы должны использовать Eloquent Events (не путать с Laravel событий).

public function boot() 
{ 
    Article::updated(function ($user) { 
     // do some stuff here 
    }); 
} 
+0

Конечно, но как создать пользовательский красноречивое событие огонь только тогда, когда категория обновляется. –

+0

Если у вас есть модель 'Category', просто используйте' Category :: updated (.... ' –

+0

http://stackoverflow.com/a/36406114/4865248 –

0

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

public function boot() 
{ 
    self::updated(function ($model) { 
     if (array_key_exists('category_id', $model->getDirty())) { 
      // Log things here 
     } 
    }); 
} 

Laravel будет заполнить «грязный» массив, который содержит измененные поля. Вы можете определить, когда какое-то поле изменилось с помощью этого.

Вы также:

$model->getOriginal('field_name') // for this field value (originally) 
$model->getOriginal() // for all original field values 
+0

Я думаю, что это он спасибо. –

Смежные вопросы