| Package Data | |
|---|---|
| Maintainer Username: | staudenmeir |
| Maintainer Contact: | mail@jonas-staudenmeir.de (Jonas Staudenmeir) |
| Package Create Date: | 2018-10-23 |
| Package Last Update: | 2024-07-14 |
| Home Page: | |
| Language: | PHP |
| License: | MIT |
| Last Refreshed: | 2025-11-03 15:18:41 |
| Package Statistics | |
|---|---|
| Total Downloads: | 3,399,336 |
| Monthly Downloads: | 51,597 |
| Daily Downloads: | 1,887 |
| Total Stars: | 882 |
| Total Watchers: | 5 |
| Total Forks: | 68 |
| Total Open Issues: | 0 |
This Laravel Eloquent extension allows limiting the number of eager loading results per parent using window functions.
Supports Laravel 5.5.29+.
config/database.php file, set 'strict' => false, for the MariaDB connection.composer require staudenmeir/eloquent-eager-limit:"^1.0"
Use the HasEagerLimit trait in both the parent and the related model and apply limit()/take() to your relationship:
class User extends Model
{
use \Staudenmeir\EloquentEagerLimit\HasEagerLimit;
public function posts()
{
return $this->hasMany('App\Post');
}
}
class Post extends Model
{
use \Staudenmeir\EloquentEagerLimit\HasEagerLimit;
}
$users = User::with(['posts' => function ($query) {
$query->latest()->limit(10);
}])->get();
Improve the performance of HasOne/HasOneThrough/MorphOne relationships by applying limit(1):
class User extends Model
{
use \Staudenmeir\EloquentEagerLimit\HasEagerLimit;
public function latestPost()
{
return $this->hasOne('App\Post')->latest()->limit(1);
}
}
class Post extends Model
{
use \Staudenmeir\EloquentEagerLimit\HasEagerLimit;
}
$users = User::with('latestPost')->get();
You can also apply offset()/skip() to your relationship:
class User extends Model
{
use \Staudenmeir\EloquentEagerLimit\HasEagerLimit;
public function posts()
{
return $this->hasMany('App\Post');
}
}
class Post extends Model
{
use \Staudenmeir\EloquentEagerLimit\HasEagerLimit;
}
$users = User::with(['posts' => function ($query) {
$query->latest()->offset(5)->limit(10);
}])->get();