- Makers Make by SaaSykit
- Posts
- Laravel 2024 Recap, 400+ SaaSykit Users, Laravel 11.37, How to Exit A Startup & more
Laravel 2024 Recap, 400+ SaaSykit Users, Laravel 11.37, How to Exit A Startup & more
2024 was an incredible year for SaaSykit and the PHP & Laravel ecosystem as a whole! 🤩
Laravel 11 arrived with exciting new features, alongside the release of Laravel Reverb, PHP 8.4, the Laravel Visual Studio Code extension, Inertia v2.0 and more, each pushing the boundaries and making developers’ lives easier and more productive.
For SaaSykit, it was a year of milestones: our community has grown to over 400 users, 🚀 each building their unique SaaS applications on top.
🎉 Awesome News! 🎉
SaaSykit passed the 400 customers mark!! 🤯
What a GREAT milestone to start the year with!! 🚀
— Ahmad Mas (@AmasCreates)
3:29 PM • Jan 2, 2025
I’m super excited for 2025, and looking forward to even more improvements, learnings, and success.
Let’s take a moment to celebrate these achievements and dive into what’s next for the thriving world of SaaS and Laravel!
Laravel 11.37 released 🚀
Laravel 11.37 is mostly a bugfix release with a few interesting functionalities that would make your life easier!
Add
$ignoreCase
option toStr::is
This change adds an$ignoreCase
boolean parameter in theStr::is
method, allowing to disable strict-case comparison, similarly to theStr::contains
method.
Str::is('Admin', 'admin', true); // true
Str::is('*.jpg', 'photo.JPG', true); // true
Str::is('SKU123*', 'sku12345', true); // true
Str::is('prd-001*', 'PRD-001-XYZ', true); // true
Str::is('[email protected]', '[email protected]', true); // true
Added new Eloquent methods:
whereDoesntHaveRelation
,whereMorphDoesntHaveRelation
// Relation
// Before
User::whereDoesntHave('comments', function ($query) {
$query->where('created_at', '>', now()->subDay());
})->get();
// After
User::whereDoesntHaveRelation(
'comments', 'created_at', '>', now()->subDay()
)->get();
User::whereDoesntHaveRelation(
'comments', 'is_approved', false
)->get();
// Morph
// Before
User::whereDoesntHaveMorph('comments', [Post::class, Video::class], function ($query) {
$query->where('created_at', '>', now()->subDay());
})->get();
// After
User::whereMorphDoesntHaveRelation(
'comments', [Post::class, Video::class], 'created_at', '>', now()->subDay()
)->get();
User::whereMorphDoesntHaveRelation(
'comments', [Post::class, Video::class], 'is_approved', false
)->get();
Add
assertFailedWith
toInteractsWithQueue
trait
When manually failing the job, we can now check for the failure exception.
use App\Jobs\ProcessPodcast;
use App\Exceptions\MyException;
$job = (new ProcessPodcast)->withFakeQueueInteractions();
$job->assertFailedWith('whoops');
$job->assertFailedWith(MyException::class);
$job->assertFailedWith(new MyException);
$job->assertFailedWith(new MyException(message: 'whoops'));
$job->assertFailedWith(new MyException(message: 'whoops', code: 123));
From the Community
I've hand-picked some of the biggest stories at Laravel News in 2024. This year was massive, with our new Laravel Creator Spotlight series and huge announcements from Laravel like Laravel Cloud, Inertia.js 2.0, an official Laravel VS Code extension, and more!
Let's take a look at the highlights of each month in 2024…
As developers, our choices can greatly impact the performance and memory usage of our applications. Laravel offers us a variety of methods for data retrieval from databases, such as get()
, chunk()
, and lazy()
. This article aims to explore these methods, highlighting their unique characteristics. We’ll compare them using some informal benchmarks to understand their implications on memory usage and speed. Note that these benchmarks are not scientific but should provide a useful comparative view.
Background tasks component is essential in most backend systems. Regardless of what you’re creating, there’s almost always a need for a background worker in your application. Do users need to register in your app? The confirmation email should be sent as a background job. Does your app need to import data from third parties? A background job dedicated to importing is the best tool for this. If your users require reports, a background job is again the perfect tool for the task.
Laravel provides several methods for transforming Eloquent models into JSON, with toJson() being one of the most straightforward approaches. This method offers flexibility in how your models are serialized for API responses.
Laravel's Context facade enhances application insight by allowing you to add persistent metadata throughout your request lifecycle. This context automatically enriches your logs with valuable debugging information.
When working with Eloquent models, sometimes you need just the core database attributes without relationships or computed properties. Laravel's attributesToArray method provides a clean way to access this raw model data.
All about SaaS
"I've been at Summit for 5 years. My last company took 15 years, and I didn't want to do that again. At 43, with three kids in high school and one in college, I need something that works on my timeline." – Matt Wensing
Friends,
In all of venture capital’s rush to enter investments – to find and jockey and win – it can be easy to forget that you must exit them, too. No matter how long-term your vision, how persevering your commitment to founders, there is a moment when you must part ways and cash out. It is not just a part of the game; it is the point of the game.
Yet, it is rarely discussed. In part, that’s a consequence of venture capital’s time horizon. Ten years is a long time, especially when managers face more pressing problems daily. Another is that exits have historically depended almost entirely on external forces – an IPO or an acquisition. Save for the asset class’s greatest powerbrokers (who can broker alliances and arrange marriages), exits are often perceived as something to be experienced rather than created. You play the cards you are dealt and sit at the felt table until someone else carries your chips to the cashier’s cage.
If you're a distressed data startup—the fifth maker of an accidental BI tool, the fourth-biggest data observability platform, a data catalog that’s been through three pivots and two bridge rounds—you probably have a spreadsheet of companies that might acquire you. Some of the names on it are the megacorporations you said you were going to disrupt; some of them are competitors;1 some of them are prehistoric conglomerates—Infor, Pentaho, ZoomInfo, Quest—that are collectively labeled “Legacy” or “Tier 3” or “the Borg.”
Videos
Keep building, keep rocking! 🤘