📜  laravel 观察者获取旧值 - PHP (1)

📅  最后修改于: 2023-12-03 15:02:38.297000             🧑  作者: Mango

Laravel 观察者获取旧值

在 Laravel 中使用观察者可以方便的在模型中对数据进行监听和操作。而在监听模型中数据的变化时,有时候我们也需要获取到旧值来做一些比较和处理。那么在 Laravel 中,该如何获取模型的旧值呢?

Laravel 观察者简介

观察者是 Laravel 提供的一种处理模型变化的机制。通过定义一个继承至 Eloquent 模型的观察者类,可以对模型的事件进行监听。例如:在模型保存、更新、删除等操作时,都可以通过对应的事件对数据进行操作。

监听模型更新事件

在观察者中,可以监听 updating 事件来获取模型的旧值。该事件在模型数据被更新前触发,通常用于获取旧数据并保存到相关日志中。

定义观察者
namespace App\Observers;

use App\Models\User;

class UserObserver
{
    public function updating(User $user)
    {
        // 获取旧值
        $oldValue = $user->getOriginal('column_name');
    }
}
注册观察者

将观察者注册到服务容器中,一般在 AppServiceProvider 中或是一个独立的服务提供者中:

namespace App\Providers;

use App\Models\User;
use App\Observers\UserObserver;

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        // 注册 User 模型观察者
        User::observe(UserObserver::class);
    }
}
Markdown 格式完整代码
# Laravel 观察者获取旧值

在 Laravel 中使用观察者可以方便的在模型中对数据进行监听和操作。而在监听模型中数据的变化时,有时候我们也需要获取到旧值来做一些比较和处理。那么在 Laravel 中,该如何获取模型的旧值呢?

## Laravel 观察者简介

观察者是 Laravel 提供的一种处理模型变化的机制。通过定义一个继承至 Eloquent 模型的观察者类,可以对模型的事件进行监听。例如:在模型保存、更新、删除等操作时,都可以通过对应的事件对数据进行操作。

## 监听模型更新事件

在观察者中,可以监听 `updating` 事件来获取模型的旧值。该事件在模型数据被更新前触发,通常用于获取旧数据并保存到相关日志中。

### 定义观察者

```php
namespace App\Observers;

use App\Models\User;

class UserObserver
{
    public function updating(User $user)
    {
        // 获取旧值
        $oldValue = $user->getOriginal('column_name');
    }
}
注册观察者

将观察者注册到服务容器中,一般在 AppServiceProvider 中或是一个独立的服务提供者中:

namespace App\Providers;

use App\Models\User;
use App\Observers\UserObserver;

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        // 注册 User 模型观察者
        User::observe(UserObserver::class);
    }
}