【发布时间】:2018-04-22 06:43:53
【问题描述】:
laravel 有很多事件模型,比如 creating , saved 等等。
https://laravel.com/docs/5.5/eloquent#events
我唯一不明白的。活动是retrieved 和restored。有人可以举个例子给我解释一下吗?
【问题讨论】:
laravel 有很多事件模型,比如 creating , saved 等等。
https://laravel.com/docs/5.5/eloquent#events
我唯一不明白的。活动是retrieved 和restored。有人可以举个例子给我解释一下吗?
【问题讨论】:
retrived 事件在您检索模型时触发。
当您在soft deletion 之后恢复模型时,会触发 restored 事件。
您可以查看资源以深入了解 Eloquent 工作流程。查看here 表示已恢复,here 表示已恢复。
因此,例如,您可以为 User 模型创建一个 observer 并在那里为您感兴趣的事件实现侦听器。
<?php
// app/Observers/UserObserver.php
namespace App\Observers;
use App\User;
class UserObserver
{
public function retrieved(User $user)
{
//
}
public function restored(User $user)
{
//
}
}
然后在你的 AppServiceProvider 中注册观察者。
<?php
// app/Providers/AppServiceProvider.php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use App\User;
use App\Observers\UserObserver;
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
User::observe(UserObserver::class);
}
public function register()
{
//
}
}
【讨论】:
基于 laravel docs 当从数据库中检索到现有模型时,retrieveed 事件将触发。
例如,如果您的应用程序中有一个用户模型,则必须在用户模型中定义如下代码。
protected $dispatchesEvents = [
'retrieved' => \App\Events\UserRetrieved::class,
];
【讨论】: