Laravel 11.24, weekly updates, and 🔥 tip

Laravel 11.24

We've had a few patch release over the last few weeks, but today we get a minor release bringing us to Laravel 11.24. Here are the highlights:

  • Add nullOnUpdate to ForeignKeyDefinition in #52798
  • Allow passing BackedEnum to Route::can() in #52792
  • Add result shorthands for Process fakes in #52840
  • Support passing multiple batch IDs to artisan queue:retry-batch in #52873
  • Auto-register commands in routes/console.php in #52867
  • Prevent infinite recursion on touchesParents() for chaperoned models in #52883
  • Cache::flexible improvements in #52891

You may review the full branch diff on GitHub for a complete list of changes.

This version bump and update is automated for subscribers to a Shifty Plan. If you don't have one of those, be sure to bump your constraint and run composer update to get the latest features.

Weekly Journal

Last week I had a Human Shift come in. So I started that and, as always, made a few tweaks to the Shifts along the way.

I also took some time to review the wording on the automated PR subscribers receive when Laravel tags a minor or patch release. A few had asked to link to the Laravel release notes, as well as my highlights above. I also updated the PHP version (8.3) in the underlying workers.

Friday, Caen and I privately pushed our side-project live. The MVP is ready. However, we need to truly optimize (not pre-optimize) some features. So testing it in its live environment was the only want to really know which areas need attention.

This week I will finish up the Human Shifts and am livestreaming a new "mini-series" to generate Livewire components with Blueprint.

🔥 Tip

I posted this on Twitter, but I like to remove the default queue in my applications. Now, based on the replies, allow me a disclaimer.

Most of my applications have jobs which either require segmentation or prioritization. So, if you have a simple app with simple background jobs, this tip is not for you, yet.

With that said, I like to remove the default queue because it forces me to explicitly set the queue for a job. If I forget to set it, it doesn't just run (on the default queue). It's much easier to debug why a job didn't run rather than trying to determine why one job ran before another job.