hashemi / fireworks
一个简单的特性,可以帮助在Laravel模型上按属性触发事件。使用Laravel模型事件,创建钩子。
Requires
- php: >=7.1
- illuminate/database: >=6.0
- illuminate/support: >=6.0
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()。
警告
请正确使用钩子,否则数据将在每个钩子中被修改。
贡献
欢迎提交拉取请求。对于任何更改,请先打开一个问题以讨论您想要更改的内容。