关于 Laravel Model Deleted 事件
在使用 $result = $user->delete()时, 在UserObserver的 deleted 方法中执行 Job 队列, 都执行成功了, 但是会执行 User::findOrFail($id), 造成500错误, 这个算不算是一个BUG? 目前我的解决方案是在 deleteing 方法中执行
具体就是我在 UserController 进行了 delete() 操作,
然后 UserObserver 又调用了 Job 队列, 会报 500 错误 findOrFail($id)
UserController 内容
class UserController extends Controller
{
public function destroy($id)
{
$result = User::findOrFail($id);
if ($result->delete()) {
return 'Success';
}
return 'Failed';
}
}
UserObserver 内容
class UserObserver
{
public function deleted(User $user)
{
UserJob::dispatch($user);
}
}
UserJob 内容
class UserJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $user;
public function __construct(User $user)
{
$this->user = $user;
}
public function handle()
{
Log::info($this->user);
}
}
关于 LearnKu
deleted 不是删除完成之后,触发的事件嘛?
deleted 应该是已经把数据删除了吧,所以
Log::info($user)不会记录到信息?在控制器里面 delete() 都已经删除了,然后队列执行 Job 注入User模型肯定是要firstOrFail 查询一次的,数据早就不存在了,肯定报错咯。