在Laravel中创建,更新或删除任何模型后采取措施

唐·P

我想在应用程序中每次创建,更新或删除任何模型时都执行一个函数。

例如,我想将型号名称及其记录数据打印到我的日志中。

我怎样才能做到这一点?我一直在寻找可以扩展的课程,但是没有任何运气。

用户名

回答您对Robok答案的评论时,您可以使用BaseObserver

例如,这是我使用的一个:

<?php namespace App\Observers;

use Illuminate\Database\Eloquent\Model as Eloquent;

class BaseObserver {

    public function saving(Eloquent $model) {}

    public function saved(Eloquent $model) {}

    public function updating(Eloquent $model) {}

    public function updated(Eloquent $model) {}

    public function creating(Eloquent $model) {}

    public function created(Eloquent $model) {}

    public function deleting(Eloquent $model) {}

    public function deleted(Eloquent $model) {}

    public function restoring(Eloquent $model) {}

    public function restored(Eloquent $model) {}
}

现在,任何模型观察者都可以扩展它:

<?php namespace App\Observers;

use App\Observers\BaseObserver;

class ProductObserver extends BaseObserver {

    public function creating(Eloquent $model)
    {
        $model->author_id = Sentry::getUser()->id;
    }

    public function created(Eloquent $model)
    {
        if(Input::hasFile('logo')) Image::make(Input::file('logo')->getRealPath())->save(public_path() ."/gfx/product/logo_{$model->id}.png");
    }

    public function updating(Eloquent $model)
    {
        $model->author_id = Sentry::getUser()->id;
    }

    public function updated(Eloquent $model)
    {
        if(Input::has('payment_types')) $model->paymentTypes()->attach(Input::get('payment_types'));

        //Upload logo
        $this->created($model);
    }
}

如果您希望$model->author_id = Sentry::getUser()->id每个观察者都有类似的东西,当然可以在中应用BaseObserver

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

点击“提交”按钮后不应采取任何措施(Adobe Livecycle)

来自分类Dev

在lilypond中采取一些措施后断开线

来自分类Dev

takeUntil rxjs函数后如何采取措施

来自分类Dev

当用户单击任何infoWindow中的复选框时,我该如何采取措施?

来自分类Dev

在lilypond中采取了一些措施后才中断了分界线

来自分类Dev

从生产数据库的表中删除记录之前需要采取什么预防措施

来自分类Dev

Windows 10会非常缓慢地删除许多小文件。可以采取任何措施来加快速度吗?

来自分类Dev

Sails.js REST不采取任何措施

来自分类Dev

make:make文件的“ all”错误无需采取任何措施

来自分类Dev

OpenWrt工厂VLAN设置,无需采取任何措施?

来自分类Dev

方法确实在父视图控制器中调用,但方法内的逻辑从不采取任何措施

来自分类Dev

在命令运行期间超时后采取措施

来自分类Dev

打开FCM通知后如何采取措施/移动屏幕?

来自分类Dev

在命令运行期间超时后采取措施

来自分类Dev

杀死后台脚本后立即采取措施

来自分类Dev

创建钩子后在sailsjs模型中更新未定义

来自分类Dev

创建钩子后更新sailsjs模型中的未定义

来自分类Dev

在Laravel中获取模型的关联以简化创建/更新

来自分类Dev

Laravel 从表单创建或更新模型链接关系中的许多

来自分类Dev

如何检查Promise返回的值并在angularjs中采取措施?

来自分类Dev

验证是否包含在Rails中而不采取措施

来自分类Dev

每次在python中旋转日志时都要采取措施

来自分类Dev

在laravel中更新后如何删除旧图像?

来自分类Dev

在laravel中更新后如何删除旧图像?

来自分类Dev

Django Rest Framework:在模型中创建自定义方法后,字段无法创建或更新

来自分类Dev

闪存可以持续多长时间而无需采取任何措施?

来自分类Dev

打开本地文件时需要采取任何预防措施吗?

来自分类Dev

Laravel 在更新后包含与模型的关系

来自分类Dev

在Azure作为资源组贡献者中,为什么不能创建存储帐户,应采取什么措施来防止这种情况?

Related 相关文章

  1. 1

    点击“提交”按钮后不应采取任何措施(Adobe Livecycle)

  2. 2

    在lilypond中采取一些措施后断开线

  3. 3

    takeUntil rxjs函数后如何采取措施

  4. 4

    当用户单击任何infoWindow中的复选框时,我该如何采取措施?

  5. 5

    在lilypond中采取了一些措施后才中断了分界线

  6. 6

    从生产数据库的表中删除记录之前需要采取什么预防措施

  7. 7

    Windows 10会非常缓慢地删除许多小文件。可以采取任何措施来加快速度吗?

  8. 8

    Sails.js REST不采取任何措施

  9. 9

    make:make文件的“ all”错误无需采取任何措施

  10. 10

    OpenWrt工厂VLAN设置,无需采取任何措施?

  11. 11

    方法确实在父视图控制器中调用,但方法内的逻辑从不采取任何措施

  12. 12

    在命令运行期间超时后采取措施

  13. 13

    打开FCM通知后如何采取措施/移动屏幕?

  14. 14

    在命令运行期间超时后采取措施

  15. 15

    杀死后台脚本后立即采取措施

  16. 16

    创建钩子后在sailsjs模型中更新未定义

  17. 17

    创建钩子后更新sailsjs模型中的未定义

  18. 18

    在Laravel中获取模型的关联以简化创建/更新

  19. 19

    Laravel 从表单创建或更新模型链接关系中的许多

  20. 20

    如何检查Promise返回的值并在angularjs中采取措施?

  21. 21

    验证是否包含在Rails中而不采取措施

  22. 22

    每次在python中旋转日志时都要采取措施

  23. 23

    在laravel中更新后如何删除旧图像?

  24. 24

    在laravel中更新后如何删除旧图像?

  25. 25

    Django Rest Framework:在模型中创建自定义方法后,字段无法创建或更新

  26. 26

    闪存可以持续多长时间而无需采取任何措施?

  27. 27

    打开本地文件时需要采取任何预防措施吗?

  28. 28

    Laravel 在更新后包含与模型的关系

  29. 29

    在Azure作为资源组贡献者中,为什么不能创建存储帐户,应采取什么措施来防止这种情况?

热门标签

归档