haganjones / laravel-observe-properties
一个简单的特性,允许您观察模型上变化的属性。
0.1.1
2017-12-11 14:16 UTC
Requires
- php: >=5.6.0
Requires (Dev)
- mockery/mockery: 0.9.*
- orchestra/database: 3.3.*
- orchestra/testbench: 3.3.*
- phpunit/phpunit: ~6.0
This package is auto-updated.
Last update: 2024-09-10 05:27:18 UTC
README
一个简单的特性,允许您观察模型上变化的属性。
当观察模型时,有时需要检查模型上的特定属性是否已更改,然后执行某些操作。如果您需要经常这样做,那么您的观察者方法可能会很快变得混乱,希望这个特性能帮助您解决问题!
通过Composer安装
composer require "haganjones/laravel-observe-properties"
使用方法
在您的 观察类 中包含此特性
<?php namespace App\Observers; use HaganJones\LaravelObserveProperties\ObserveProperties; class UserObserver { use ObserveProperties; }
在您的类中包含此特性允许您使用 camelcaseProperty + Eventname
方法。例如,继续使用上面的 UserObserver
类
// Inside UserObserver Class public function emailUpdated(User $user, $oldValue, $newValue) { $format = 'User %d changed their email from %s to %s'; Log::info(sprintf($format, $user->id, $oldValue, $newValue)); // User 1 changed their email from oldrusty@example.org to newshiny@example.org }
可用事件
所有默认Laravel事件都受支持,请注意某些事件可能只会接收一个值。下面是事件和参数的完整列表。
注意事项
根据Laravel文档,Saving|Saved
事件与 Creating|Created
和 Updating|Updated
方法同时触发。
考虑到这一点,在 创建 模型时,Saving|Saved
事件将接收 $oldValue
和 $newValue
参数,但它们的值将是相同的。
在现有观察者类中使用。
您可能会希望将此功能添加到现有的观察者类中。在这种情况下,您需要包含此特性,但需要为其方法提供一些别名,例如
<?php namespace App\Observers; use HaganJones\LaravelObserveProperties\ObserveProperties; use App\User; class UserObserver { use ObserveProperties { updating as updatingProperties; //add in other method aliases here. } public function updating(User $user) { //Do things with $user return $this->updatingProperties($user); } public function firstNameUpdating(User $user, $oldValue, $newValue) { //$user->first_name was just updated. } }