hashemi/fireworks

一个简单的特性,可以帮助在Laravel模型上按属性触发事件。使用Laravel模型事件,创建钩子。

1.1 2022-04-07 03:30 UTC

This package is auto-updated.

Last update: 2024-09-07 08:54:07 UTC


README

一个简单的特性,可以帮助在Laravel模型上按模型属性触发事件。使用Laravel模型事件,以创建有关更改列和数据的钩子。

安装

您可以从Composer开始。进入您的终端,并从项目根目录运行此命令。

composer require hashemi/fireworks

设置

首先,您需要在要注册模型事件的模型上使用Fireworks特性。

class User extends Model
{
    // Use Fireworks Trait
    // ....
    use \Hashemi\Fireworks\Fireworks;
    // ....
}

Fireworks特性在您的模型上添加了boot方法,并注册了由Laravel提供的预定义模型事件钩子。此包支持retrieved, creating, created, updating, updated, deleting, deleted, saving, saved钩子。因此,您无需再次注册这些钩子,因为它们已经在boot方法中。

如何使用

此包将帮助您了解每个钩子方法。例如:假设您想使用creating钩子,只需在您的模型上声明onModelCreating方法。

class User extends Model
{
    // Use Fireworks Trait
    // ....
    use \Hashemi\Fireworks\Fireworks;
    protected $fillable = [
        'name',
    ];
    // ....
    protected function onModelCreating($model) {
        $model->name = "Kuddus";
    }

    protected function onModelUpdating($model) {}

    protected function onModelSaving($model) {}
    
    protected function onModelCreated($model) {}

    protected function onModelUpdated($model) {}

    protected function onModelSaved($model) {
        $model->name = "Ali";
        $model->save();
    }
    
    protected function onModelNameSaved($model, $newValue, $oldValue)
    {
        
    }
}

onModelCreating($model)

您可以使用onModelCreating代替static::creating

onModelUpdating($model)

您可以使用onModelUpdating代替static::updating

onModelSaving($model)

您可以使用onModelSaving代替static::saving

onModelDeleting($model)

您可以使用onModelDeleting代替static::deleting

onModelRetrieved($model)

您可以使用onModelRetrieved代替static::retrieved

onModelCreated($model)

您可以使用onModelCreated代替static::created

onModelUpdated($model)

您可以使用onModelUpdated代替static::updated

onModelSaved($model)

您可以使用onModelSaved代替static::saved

onModelDeleted($model)

您可以使用onModelDeleted代替static::deleted

约定

  • 您的钩子方法应该是onModel*格式。其中*将被StudlyCase钩子名称替换。因此,如果您的钩子是creating,则方法名称应该是onModelCreating()
  • 如果您想按列更改触发事件,则钩子方法应该是onModel<PropertyName><Hookname>格式。其中PropertyName将替换为您列的StudlyCase名称,而Hookname也将以相同的方式。因此,如果您的列是phone_number且您的钩子是updating,则方法名称应该是onModelPhoneNumberUpdating()

警告

请正确使用钩子,否则数据将在每个钩子中被修改。

贡献

欢迎提交拉取请求。对于任何更改,请先打开一个问题以讨论您想要更改的内容。