logo

  • 欢迎各位友链


  • 首页
  • 关于
  • 技术文章
  • 资源分享
  • 微语
  • 相册
  • 优秀博客
  • 留言

Laravel 中的模型事件与 Observer

 2019/12/16
 Garlic
 0
 533
“ 模型事件在Laravel的世界中,你对Eloquent大多数操作都会或多或少的触发一些模型事件,今天就来看一下模型事件的使用。Laravel事先已经定义好了10个模型事件以供我们使用,它们分别是:creating,created,u ”
Laravel 中的模型事件与 Observer

模型事件

在 Laravel 的世界中,你对 Eloquent 大多数操作都会或多或少的触发一些模型事件,今天就来看一下模型事件的使用。 Laravel 事先已经定义好了 10 个模型事件以供我们使用,它们分别是:

creating, created , updating, updated, saving, saved, deleting, deleted, restoring, restored。

事件名称都很浅显易懂。

总结

当模型已存在,不是新建的时候,依次触发的顺序是:

saving -> updating -> updated -> saved

当模型不存在,需要新增的时候,依次触发的顺序则是

saving -> creating -> created -> saved

Observer (观察者)

如果你想在一个模型中监听多个事件,那么你可以把它写成一个类,类中的方法名称即是你想要监听的事件名称

class UserObserver
{

        /**
         * 监听数据即将创建的事件。
         *
         * @param  User $user
         * @return void
         */
        public function creating(User $user)
        {

        }

        /**
         * 监听数据创建后的事件。
         *
         * @param  User $user
         * @return void
         */
        public function created(User $user)
        {

        }

        /**
         * 监听数据即将更新的事件。
         *
         * @param  User $user
         * @return void
         */
        public function updating(User $user)
        {

        }

        /**
         * 监听数据更新后的事件。
         *
         * @param  User $user
         * @return void
         */
        public function updated(User $user)
        {

        }

        /**
         * 监听数据即将保存的事件。
         *
         * @param  User $user
         * @return void
         */
        public function saving(User $user)
        {

        }

        /**
         * 监听数据保存后的事件。
         *
         * @param  User $user
         * @return void
         */
        public function saved(User $user)
        {

        }

        /**
         * 监听数据即将删除的事件。
         *
         * @param  User $user
         * @return void
         */
        public function deleting(User $user)
        {

        }

        /**
         * 监听数据删除后的事件。
         *
         * @param  User $user
         * @return void
         */
        public function deleted(User $user)
        {

        }

        /**
         * 监听数据即将从软删除状态恢复的事件。
         *
         * @param  User $user
         * @return void
         */
        public function restoring(User $user)
        {

        }

        /**
         * 监听数据从软删除状态恢复后的事件。
         *
         * @param  User $user
         * @return void
         */
        public function restored(User $user)
        {

        }
}

然后在 AppServiceProvider 中注册此观察者

<?php

namespace App\Providers;

use App\User;
use App\Observers\UserObserver;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
        /**
         * 运行所有应用.
         *
         * @return void
         */
        public function boot()
        {

                 // 为 User 模型注册观察者
                User::observe(UserObserver::class);
        }

        /**
         * 注册服务提供.
         *
         * @return void
         */
        public function register()
        {
                //
        }
}

然后你就可以在你注册的 Observer 中观测到各种事件啦~

模型中定义

在模型 $dispatchesEvents 中定义

<?php

namespace App\Models;

use App\Events\Publiclished;
use Illuminate\Database\Eloquent\Model;

class BaseModel extends Model
{
    protected $dispatchesEvents = [
            'created' => Publiclished::class,
            'updated' => Publiclished::class,
            'deleted' => Publiclished::class,
    ];
}

支付宝 微信
 36

PHP Laravel
  • 本文链接: Laravel 中的模型事件与 Observer | Garlic`s Blog
  • 版权声明:若无特殊注明,本文皆为《Garlic`s Blog》原创,转载请保留文章出处。
  • 备注:相关侵权、举报、投诉及建议等,请发E-mail:php_garlic@163.com。
 Laravel执行php artisan vendor:publish卡住问题解决方法
 油猴+百度网盘直链下载助手+IDM
  • 日常开发的效率提升工具
    日常开发的效率提升工具
  • 宝塔7.6.0去除登陆限制,及强制跳转 /bind解决方法
    宝塔7.6.0去除登陆限制,及强制跳转 /bind解决方法
  • Laravel 常用扩展包
    Laravel 常用扩展包
  • Laravel route() 方法生成 HTTPS 链接
    Laravel route() 方法生成 HTTPS 链接
暂无评论,快抢沙发吧~
  • 😋 支持Emoji表情,可用的 Emoji 请见 🤘 👉 Emoji 列表 ⭐ ✨
 请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!



 验证码
Garlic
Garlic
你能够拥有梦想,而且梦想能够实现,网络是离你梦想最近的地方!
 44
 关注 公众号
983 本站已勉强运行
0 今日pv
29 文章数量
文章搜索
最新评论
  • nevermore
    nevermore 2020/12/16
    文章

    博主这个网站搭建花了多久的哈。扒代码花了多久的哈

  • 演员
    演员 2020/10/03
    文章

    老哥这板子好帅,能分享哈不

 点击排行
 最多点赞
  • 宝塔面板安装云锁Nginx自编译web防护教程
    宝塔面板安装云锁Nginx自编译web防护教程
    2019/12/06浏览:652
  • Laravel Eloquent: 使用 hasMany 来处理『无限极分类』
    Laravel Eloquent: 使用 hasMany 来处理『无限极分类』
    2020/01/24浏览:634
  • 油猴+百度网盘直链下载助手+IDM
    油猴+百度网盘直链下载助手+IDM
    2019/12/20浏览:634
  • Laravel Eloquent: 使用 hasMany 来处理『无限极分类』
    Laravel Eloquent: 使用 hasMany 来处理『无限极分类』
    2020/01/24点赞:100
  • 清除Windows 垃圾
    清除Windows 垃圾
    2020/09/30点赞:87
  • 日常开发的效率提升工具
    日常开发的效率提升工具
    2021/10/19点赞:81
 标签
常用工具 Windows 宝塔 Office SoftEther 负载均衡 百度网盘 Yii Thinkphp Apache
 友情链接
Laravel China 社区 椰子皮博客 站点导航
首页 Emoji 表情列表 网站地图
CopyRight © 2019 - 2022 - Garlic`s Blog - 粤ICP备17064364号-1
声明: 本站资源来源自网络,如有侵权,请联系站长删除! 本站前端模板采用 椰子皮博客