首页 > 其他 > 详细

laravel观察器(监听事件)

时间:2021-01-26 22:42:33      阅读:33      评论:0      收藏:0      [点我收藏+]

laravel观察器(监听事件)

应用:不需要在原来控制器添加成功后写代码,我们在自定义的事件观察类中对应的生命周期方法中写对应的功能。

1、使用artisan命令来添加模型观察事件

# 此命令是laravel5.7之后才有的(包含5.7),之前想要有此功能,手动创建目录和文件
php artisan make:observer RoleObserver -m Models/Role

技术分享图片

2、进行注册(两种方式,任选其一)

1、模型层

<?php

namespace App\Models;

use App\Observeers\RoleObserve;
use Illuminate\Database\Eloquent\Model;

class Role extends Model
{
    protected static function boot()
    {
        parent::boot(); // TODO: Change the autogenerated stub
        self::observe(RoleObserve::class);
    }
}

技术分享图片

2、服务提供者

技术分享图片

上述完成后就可以使用laravel的观察器了,下面是一个应用实例(我们创建一个角色后会自动生成一个日志),具体如下:

3、应用实例

控制器创建角色代码

 //数据验证
$this->validate($request,[
    ‘name‘=>‘required|unique:roles,name‘
]);
$post = $request->only([‘name‘]);
$res = Role::create($post);
//正常我们是需要在此处写记录日志,当我们写了laravel观察器,
//在观察器created方法中写上记录日志就会执行
if ($res){
    return [‘code‘=>0,‘msg‘=>‘添加成功‘];
}else{
    return [‘code‘=>1,‘msg‘=>‘添加失败‘];
}

技术分享图片

监听器中写日志的代码

允许你挂接到模型生命周期的如下节点: retrievedcreatingcreatedupdatingupdatedsavingsaveddeletingdeletedrestoringrestored。事件允许你每当特定模型保存或更新数据库时执行代码。每个事件通过其构造器接受模型实例。

retrieved 事件在现有模型从数据库中查找数据时触发。当新模型每一次保存时,creatingcreated 事件被触发。如果数据库中已经存在模型并且调用了 save 方法,updating / updated 事件被触发。这些情况下,saving / saved 事件也被触发。

注意:通过 Eloquent 进行批量更新时,被更新模型的 savedupdated 事件不会被触发。这是因为批量更新时,并没有真的获取模型。

 public function created(Role $role)
 {
     \Log::info(‘创建了一个角色‘);
 }

技术分享图片

效果

技术分享图片

好了,介绍到这里就结束了,有什么需要的可以在下方评论中联系作者。

laravel观察器(监听事件)

原文:https://www.cnblogs.com/jurij/p/14332122.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!