laravel之模型事件

发布时间:2022-12-23 23:17:51 阅读:1244次

我们可以监听一张表的增删改,比如增的时候我们做什么,改的时候我们做什么

直接上代码
AppObservers

<?php
namespace AppObservers;

class TestObserver {

public function creating() {
    dump("create - 1 action");
}

public function updated() {
    dump("update + 1 action");
}

}
AppProvidersEventServiceProvider.php 注册

/**

 * Register any events for your application.
 * 记得引入模型
 * @return void
 */
public function boot()
{
    parent::boot();

    //
    TestModel::observe(TestObserver::class);
}

控制器测试

public function test(){

    $data = [
        'title' => 'test',
        'displayorder' => 3,
        'type' => 'testtest'
    ];
    TestModel::create($data);
    dump("create action");
}

image.png
public function test(){

    $data = [
        'title' => 'test',
        'displayorder' => 4,
        'type' => 'testtest'
    ];
    TestModel::where('id', 3)->first()->update($data);
    dump("update action");
}

image.png
模型钩子方法
retrieved, #获取到模型实例后触发
creating, #创建过程前 * 常用
created, #创建成功后 * 常用
updating, #更新过程前 * 常用
updated, #更新成功后 * 常用
saving, #代表这两个方法的集合creating,updating * 常用
saved, #代表这两个方法的集合created,updated * 常用
deleting, #删除过程前 * 常用
deleted, #删除过程后 * 常用
restoring, #恢复软删除记录前触发
restored, #恢复软删除记录后触发
当模型已存在,非新建时,事件触发顺序如下:
saving -> updating -> updated -> saved
当模型不存在,即需要新增时,事件触发顺序如下:
saving -> creating -> created -> saved

一个save()方法执行成功的话,会影响updated 和 saved,并且是先触发updated事件再触发saved事件,所以实际使用观察者的时候二选一即可,千万别两个事件重复交叉了。

如有问题,可以QQ搜索群1028468525加入群聊,欢迎一起研究技术

支付宝 微信

有疑问联系站长,请联系QQ:QQ咨询

转载请注明:laravel之模型事件 出自老鄢博客 | 欢迎分享