Skip to main content

Unsubscribing an observer while running create, update or delete operations on modal in Laravel

Today I was trying to copy some data from one application to another application. The Data has some nested relationships so I created a custom feature to fetch the data using Apis and insert them one by one into my destination application.

My problem while inserting the data was, there was an observer is set to File.php (for example) model that was running run logic to upload the incoming file to AWS s3 Cloude storage. But I am not really uploading anything while inserting the data. So, I want to stop the Observer from running the functionality while I was running my custom feature.

While looking for some solution to my problem I came to a solution that I would like to share with you.

File::unsetEventDispatcher();

I used this function call before running the logic only once and my observer stopped executing the code on Create and Update model event.

You can also use the same code to stop the other event from executing while running some logic.

You can get all the event displachers and filter the displachers you want to dispatch while running your logic.

$dispatcher = YourModel::getEventDispatcher();

Then you can update the $displacher array and set the Event displachers again:

YourModel::setEventDispatcher($dispatcher);

I hope this will help you to solve the problem and give you some new thoughts about playing with events.

Comments

Popular posts from this blog

The Great Architectures of Bijawar, Chhatarpur, M.P.

Bijawar, Temple Janki Niwash Bijawar, Temple Janki Niwash   Maharaja Palace of Bijawar - A very royal palace of the Great Maharaja Ji of Bijawar. The palace has a great eye caching architecture. It stands tall with its mirror image on a big Talab in front of it. The palace is become very old and loosing its age at a rapid pace. Unfortunately its to late to restore the Bijawar palace infrastructure but one should create Bijawar palace replica or model to preserve its beauty and architecture. This photo of the palace is the first photo taken and publish on the web. That time there was no good cameras available but as said Old is Gold.

Shanti Mantras

ॐ पूर्णमदः पूर्णमिदम् पूर्णात् पूर्णमुदच्यते | पूर्णस्य पूर्णमादाय पूर्णमेवावशिष्यते || ॐ शान्तिः, शान्तिः, शान्तिः ||

Call async function in loop for array and update the exiting array Javascript and Node Js

Here is a good example of the code to call async function in loop for element of an array and update the exiting array. In this example I have used the Array.prototype.entries() function to get the index and value of each array item of a simple array. Array.prototype.entries() method helps to iterate an array with index and element. function timeout(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } async function resolveAfter2Seconds(num) { await timeout(2000); return num; } async function main() { let arr = ["Saab", "Volvo", "BMW"]; for (let [index, val] of arr.entries()) { console.log(index, val); console.log(await resolveAfter2Seconds(val)); } } main();