我想在laravel 5.1中创建一个自定义模型事件。
对于e.x.更新文章类别时,我想制作一个活动并听取它。
$article = Article::find($id);
$article->category_id = $request->input('category_id');
// fire an event here
答案 0 :(得分:1)
您应该使用Eloquent Events(不要与Laravel Events混淆)。
Intent emailIntent =
new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto", "", null))
.putExtra(Intent.EXTRA_SUBJECT, "blah")
.putExtra(Intent.EXTRA_TEXT, emailBody);
startActivity(Intent.createChooser(emailIntent, "Send email..."));
答案 1 :(得分:0)
您可能希望调查Observers以使其更具可重用性和单一责任感,但起点可能相似:
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
答案 2 :(得分:0)
您可以使用 Attribute Events 在 category_id 属性更改时触发事件:
class Article extends Model
{
protected $dispatchesEvents = [
'category_id:*' => ArticleCategoryChanged::class,
];
}