在我的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.
*/
没有数据存储在历史表中。我不知道这个注解行的意思,也不知道你的行是否处理了两次事件
1条答案
按热度按时间uqjltbpv1#
问题是我在
EventServiceProvider
中定义了两次UserObserver