Laravel 9.17, weekly updates, and 🔥 tip
Laravel 9.17
Had a minor release late last week and a minor release today, bringing us to Laravel 9.17. Here are some highlights from both:
- Add
withWhereHas()
to Eloquent in #42597 - Support user authentication for Pusher in #42531
- Add
withoutEagerLoad()
to Eloquent in #42641 - Allow asserting data for pushed jobs in #42676
- Allow controlling random string generation in tests in #42669
- Add
not_starts_with
validation rule in #42683 - Add
quarterlyOn()
schedule frequency in #42692
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 continued to work towards the v1.0 release of the Workbench desktop app. I focused mostly on updating the dependencies. This included the Docker image, Electron, Tailwind, and Vue. As always npm
is a pleasure to work. I shared some of the fun in this tweet.
I also got back into live streaming Thursday by upgrading from Laravel 5.4 to Laravel 9.x. This was an unknown codebase for a volunteer organization a fellow developer submitted. Unfortunately the live stream was cut a bit short when I got a call from Izzy's daycare. But I recorded a Part 2 to finish demoing my upgrade process.
We took a weekend getaway for Ashley's birthday. I worked a little on the plane to finalize a team view for Shifts run under a Shifty Plan. Other than that, I tried to keep my laptop closed.
This week I'll focus to finish the team view, as well as tweak some of the bugs I found during the Human Shift.
I'll also live stream tomorrow writing code (and tests) for sending an email reminder for expiring Workbench licenses.
🔥 Tip
Last week I mentioned using atomic locks to help with a race condition when refreshing GitLab tokens.
This was my first time using atomic locks. The examples within the docs didn't have any code within the closures. So I wasn't quite sure how to return something.
As with most things in Laravel, the answer was what you'd expect - I just return
it from the closure.
$bar = Cache::lock('foo')->get(function () { return 'bar';});