在laravel上的模型事件生命周期中检索到了什么?

时间:2018-04-22 06:43:54

标签: php laravel

laravel有许多事件模型,例如creatingsaved等。

https://laravel.com/docs/5.5/eloquent#events

我唯一不懂的东西。该活动为retrievedrestored。有人可以通过示例向我解释这个问题吗?

2 个答案:

答案 0 :(得分:2)

检索模型时会触发检索到的事件。

soft deletion之后恢复模型时会触发恢复的事件。

您可以查看来源以深入了解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()
    {
        //
    }
}

答案 1 :(得分:1)

基于laravel docs当从数据库中检索现有模型时,将触发检索到的事件。

例如,如果您的应用程序中有用户模型,则必须在用户模型中定义如下所示的代码。

protected $dispatchesEvents = [
'retrieved' => \App\Events\UserRetrieved::class,

];