Laravel Eloquent 多个观察者公用同一套方法

使用方法

  1. 创建观察者类
php artisan make:observer UserObserver --model=User
  1. 注册观察者
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{

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值