Introduction
Sometimes when you're eager loading relationships on Laravel models, you might want to limit the number of related models that are returned.
For example, on a blogging platform, you might want to load every author in the system along with three of their posts.
In older versions of Laravel, limiting eager loaded relationships was a bit of a fiddly task. I could never really find an elegant way to do it that felt right. So I usually installed Jonas Staudenmeir's (@staudenmeir) staudenmeir/eloquent-eager-limit package which adds this functionality.
However, at the beginning of this year, the core functionality behind that package was merged into the Laravel framework itself. So this means in Laravel 11, we can limit eager loaded relationships without needing to install any additional packages.
Let's take a look at an example.
Limiting Eager Loaded Relationships in Laravel
Let's say we have a blogging platform and we want to load every author in the system along with three of their posts.
We can achieve this using the limit method in the eager loading query:
use App\Models\Post; use App\Models\Author; use Illuminate\Contracts\Database\Eloquent\Builder; $authors = Author::query() ->with([ 'posts' => fn (Builder $query): Builder => $query->limit(3), ]) ->get();
As we can see in the code example above, we've defined that we want to eager load the posts relationship on the AppModelsAuthor model. In the eager loading query, we've used the limit method to specify that we only want to load three posts.
The Underlying SQL Queries
For anyone interested, the query above would generate two SQL queries.
The first query fetches the authors from the database:
SELECT * FROM `authors`
The second query fetches the three posts for each author (assuming we have 5 authors in the system):
SELECT * FROM ( SELECT *, row_number() OVER (PARTITION BY `posts`.`author_id`) AS `laravel_row` FROM `posts` WHERE `posts`.`author_id` IN (1, 2, 3, 4, 5) ) AS `laravel_table` WHERE `laravel_row` <h2> Further Reading </h2> <p>If you enjoyed reading this post, you might be interested in checking out my 220+ page ebook "Battle Ready Laravel" which covers similar topics in more depth.</p> <p>Or, you might want to check out my other 440+ page ebook "Consuming APIs in Laravel" which teaches you how to use Laravel to consume APIs from other services.</p> <p>If you're interested in getting updated each time I publish a new post, feel free to sign up for my newsletter.</p> <p>Keep on building awesome stuff! ?</p>
The above is the detailed content of Limit Eager Loaded Relationships on Laravel Models. For more information, please follow other related articles on the PHP Chinese website!

Long URLs, often cluttered with keywords and tracking parameters, can deter visitors. A URL shortening script offers a solution, creating concise links ideal for social media and other platforms. These scripts are valuable for individual websites a

Laravel simplifies handling temporary session data using its intuitive flash methods. This is perfect for displaying brief messages, alerts, or notifications within your application. Data persists only for the subsequent request by default: $request-

This is the second and final part of the series on building a React application with a Laravel back-end. In the first part of the series, we created a RESTful API using Laravel for a basic product-listing application. In this tutorial, we will be dev

Laravel provides concise HTTP response simulation syntax, simplifying HTTP interaction testing. This approach significantly reduces code redundancy while making your test simulation more intuitive. The basic implementation provides a variety of response type shortcuts: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

The PHP Client URL (cURL) extension is a powerful tool for developers, enabling seamless interaction with remote servers and REST APIs. By leveraging libcurl, a well-respected multi-protocol file transfer library, PHP cURL facilitates efficient execution of various network protocols, including HTTP, HTTPS, and FTP. This extension offers granular control over HTTP requests, supports multiple concurrent operations, and provides built-in security features.

Do you want to provide real-time, instant solutions to your customers' most pressing problems? Live chat lets you have real-time conversations with customers and resolve their problems instantly. It allows you to provide faster service to your custom

The 2025 PHP Landscape Survey investigates current PHP development trends. It explores framework usage, deployment methods, and challenges, aiming to provide insights for developers and businesses. The survey anticipates growth in modern PHP versio

In this article, we're going to explore the notification system in the Laravel web framework. The notification system in Laravel allows you to send notifications to users over different channels. Today, we'll discuss how you can send notifications ov


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

SublimeText3 English version
Recommended: Win version, supports code prompts!

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)
