有時候你的操作可能會觸發別人的事件(也不知道是哪個大佬寫的,我們也不敢亂改)
分享一個取消事件的例子。
//獲取model裡面的事件
$dispatcher = YourModel::getEventDispatcher();
//禁用model裡面的事件
YourModel::unsetEventDispatcher();
// 呼叫model的save方法
$yourInstance->save();
//啟用事件
YourModel::setEventDispatcher($dispatcher);
//Visitor model有saved事件,某些地方某些情況監聽到後做一些其他操作
protected $dispatchesEvents = [
'saved' => VisitorSavedEvent::class,
];
//有時候不需要觸發事件,是可以取消的,可以呼叫model的update方法避開save()或者取消事件(推薦後者)。
// 獲取來訪資訊
$visitor = Visitor::where('id', $request->visitor_id)->first();
//取消事件觸發
$dispatcher = Visitor::getEventDispatcher();
Visitor::unsetEventDispatcher();
$ret = $visitor->save();
Visitor::setEventDispatcher($dispatcher);
參考連結: