Laravel学习笔记之Model Observer模型观察者

DATE: 2017-04-01 / VIEWS: 7156

先看文档介绍:

为加强处理模型事件,您可以注册一个模型观察者。一个观察者类可以包含很多函数对应于很多模型事件。比如,creating, updating, saving 函数可以在一个观察者中,除其他模型事件名之外。

一个模型观察者可以像这样:

<?php
namespace App\Observers;

class UserObserver
{
    public function saved($model)
    {
        // 确定模型或给定属性是否已被修改。
        $model->isDirty('status');
        // 获取自上次同步以来已更改的属性
        $model->getDirty();
    }

    public function creating($model)
    {
        //
    }

    public function deleted()
    {
        //
    }
}

您可以使用 observe 函数在 User 模型注册一个观察者实例:

public static function boot()
{
    parent::boot();
    static::observe(new UserObserver());
}

应用场景:

我们在做交易的时候,一笔订单从开始到结束有很多种状态,每种状态都会发相应的通知邮件。

可以在订单更改保存后,触发saved事件,根据isDirty()和getDirty()来判断当前是否更改了状态及当前状态,发送相应的通知。

比在相应的操作中写发送通知要清楚方便得多了。