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()
。
警告
请正确使用钩子,否则数据将在每个钩子中被修改。
贡献
欢迎提交拉取请求。对于任何更改,请先打开一个问题以讨论您想要更改的内容。