Laravel观察者处理事件两次

ars1skjm  于 2023-03-04  发布在  其他
关注(0)|答案(1)|浏览(111)

在我的laravel应用程序中,我想保存所有操作(创建、更新、删除)的历史记录,为此,我创建了histories表,观察所有Models,并将处理的每个事件存储在历史记录表中,

**但是,**当我处理用户updated事件时。例如,当我处理用户created事件时,历史记录表上保存了两行。即使是ing事件。
**B:**我使用create()方法存储用户,并使用update()方法更新它

用户观察员:

/**
     * Handle the User "created" event.
     */
    public function created(User $user): void
    {
        $user_resource =(new UserResource($user))->toResponse(request());
   
        $history = History::create([
            'model_type' => User::class,
            'model_id' => $user->id,
            'action' => 'create',
            'action_date' => now(),
            'model_object' => $user_resource->content(),
            'user_id' => request()->user()->id,
        ]);
    }

    /**
     * Handle the User "updated" event.
     */
    public function updated(User $user): void
    {
        $user_resource =(new UserResource($user))->toResponse(request());
        $history = History::create([
            'model_type' => User::class,
            'model_id' => $user->id,
            'action' => 'update',
            'action_date' => now(),
            'model_object' => $user_resource->content(),
            'user_id' => request()->user()->id,
        ]);
        // dd($history);

    }

删除此行时

/**
     * Handle the User "updated" event.
     */

没有数据存储在历史表中。我不知道这个注解行的意思,也不知道你的行是否处理了两次事件

uqjltbpv

uqjltbpv1#

问题是我在EventServiceProvider中定义了两次UserObserver

相关问题