haganjones/laravel-observe-properties

一个简单的特性,允许您观察模型上变化的属性。

0.1.1 2017-12-11 14:16 UTC

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|CreatedUpdating|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.
    }
}