📅  最后修改于: 2023-12-03 15:02:38.297000             🧑  作者: Mango
在 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);
}
}
# 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);
}
}