使用方法
- 创建观察者类
php artisan make:observer UserObserver --model=User
- 注册观察者
namespace App\Providers;
use App\User;
use App\Observers\UserObserver;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* 启动应用服务。
*
* @return void
*/
public function boot()
{
User::observe(UserObserver::class);
}
/**
* 注册服务提供者。
*
* @return void
*/
public function register()
{
//
}
}
注意事项
先看代码
<?php
namespace App\Observers;
use App\User;
class UserObserver
{
/**
* 处理 User 「新建」事件。
*
* @param \App\User $user
* @return void
*/
public function created(User $user)
{
//
}
/**
* 处理 User 「更新」 事件。
*
* @param \App\User $user
* @return void
*/
public function updated(User $user)
{
//
}
/**
* 处理 User 「删除」 事件。
*
* @param \App\User $user
* @return void
*/
public function deleted(User $user)
{
//
}
}
处理updated时如果多个观察者使用同一种处理方式
可以封装成如下文件BaseObserver.php
namespace App\Observers;
use App\User;
use Illuminate\Database\Eloquent\Model;
class BaseObserver
{
protected $demo_class;
public function __construct(){
}
public function created(Model $model)
{
}
public function updated(Model $model)
{
//清空关联模型数据
$relations = array_keys($model->getRelations());
foreach ($relations as $val){
unset($model->$val);
}
//记录变动值
//json_encode($model);
}
public function deleted(Model $model)
{
}
}
class UserObserver extends BaseObserver{
}