Differences Between with and load in Laravel: When and How to Use

Adrian Generous
3 min readJan 31, 2024

--

Introduction

In the Laravel world, two fundamental methods for managing Eloquent ORM relationships are with and load. Both are used for loading relationships, but their application and behavior vary depending on the context and needs of the application.

What is with?

The with method in Laravel is used for loading Eloquent relationships during the initial query to the database. This is a form of "eager loading", where relationships are preloaded at the time the main model is fetched.

Example:

$users = User::with('posts')->get();

In this case, posts related to each user are loaded, reducing the number of database queries and preventing the N+1 query problem.

What is load?

Conversely, load is used when we already have a model(s) and want to load additional relationships at a later stage. This is a form of "lazy loading".

Example:

$user = User::find(1);
$user->load('posts');

Here, we first fetch the user, and then load their posts. This approach is useful when we need relationships at a later time or depending on certain conditions.

--

--

Adrian Generous

I navigate between coding & marketing, experienced as a CTO, project manager, & ad agency owner. I share Laravel & more on Medium, also a history enthusiast.