News

Eager Load Limit is Coming to Laravel 11

Published Updated

With the release of Laravel 11 in February 2024, Laravel will have native support for limiting the number of eagerly loaded results per parent.

Let’s say, for example, that you want to paginate users but also eagerly load three blog posts for each user:

User::with([
'posts' => fn ($query) => $query->limit(3)
])->paginate();

The above eloquent query would look something like the following JSON representation out of the box, with optimized eager-loaded models:

Using Laravel 10 or less, it is still conveniently possible via Jonas Staudenmeir’s eager-load-limit, but will now be natively supported out of the box with Laravel 11. Here’s an example of what queries you can expect in Laravel 11 for the above code:

select count(*) as aggregate from `users`
select * from `users` limit 15 offset 0
select * from (
select *, row_number() over (partition by `posts`.`user_id`)
as `laravel_row` from `posts`
where `posts`.`user_id` in (1, 2, 3...)
)
as `laravel_table` where `laravel_row` <= 3
order by `laravel_row`

The integration for Laravel 11 was done in Pull Request #49695. A massive shout-out to Jonas for incorporating this much-used package into the core of Laravel!

Paul Redmond photo

Staff writer at Laravel News. Full stack web developer and author.

Sponsored

laravelcloud logo
Laravel Cloud

Easily create and manage your servers and deploy your Laravel applications in seconds.

Visit Laravel Cloud

The latest

View all →
PayZephyr: One Payment API for Stripe, Paystack, and PayPal image

PayZephyr: One Payment API for Stripe, Paystack, and PayPal

Read article
Bifrost Turns One With AI Builds and New Workflows image

Bifrost Turns One With AI Builds and New Workflows

Read article
Preview Blade Templates in macOS Finder with Quick Blade image

Preview Blade Templates in macOS Finder with Quick Blade

Read article
Artisan Debugging Commands in Laravel Telescope 5.24.0 image

Artisan Debugging Commands in Laravel Telescope 5.24.0

Read article
Queue totalSize() and JobInterrupted Event in Laravel 13.31 image

Queue totalSize() and JobInterrupted Event in Laravel 13.31

Read article
Find Unexpected Test Inputs with Fuzz for Pest image

Find Unexpected Test Inputs with Fuzz for Pest

Read article