palmosolutions/eloquent-eager-limit
Composer 安装命令:
composer require palmosolutions/eloquent-eager-limit
包简介
Laravel Eloquent eager loading with limit
README 文档
README
Important
The package's code has been merged into Laravel 11+ and eager loading limits are now supported natively.
This Laravel Eloquent extension allows limiting the number of eager loading results per parent using window functions.
Supports Laravel 5.5–10.
Compatibility
- MySQL 5.7+
- MySQL 5.5~5.6: Due to a bug in MySQL, the package only works with strict mode disabled.
In yourconfig/database.phpfile, set'strict' => false,for the MySQL connection. - MariaDB 10.2+
- PostgreSQL 9.3+
- SQLite 3.25+: The limit is ignored on older versions of SQLite. This way, your application tests still work.
- SQL Server 2008+
Installation
composer require staudenmeir/eloquent-eager-limit:"^1.0"
Use this command if you are in PowerShell on Windows (e.g. in VS Code):
composer require staudenmeir/eloquent-eager-limit:"^^^^1.0"
Versions
| Laravel | Package |
|---|---|
| 10.x | 1.8 |
| 9.x | 1.7 |
| 8.x | 1.6 |
| 7.x | 1.5 |
| 6.x | 1.4 |
| 5.8 | 1.3 |
| 5.5–5.7 | 1.2 |
Usage
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();
Package Conflicts
staudenmeir/laravel-adjacency-list: Replace both packages with staudenmeir/eloquent-eager-limit-x-laravel-adjacency-list to use them on the same model.staudenmeir/laravel-cte: Replace both packages with staudenmeir/eloquent-eager-limit-x-laravel-cte to use them on the same model.topclaudy/compoships: Replace both packages with mpyw/compoships-eager-limit to use them on the same model.
Contributing
Please see CONTRIBUTING and CODE OF CONDUCT for details.
palmosolutions/eloquent-eager-limit 适用场景与选型建议
palmosolutions/eloquent-eager-limit 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 49 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 01 月 24 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 palmosolutions/eloquent-eager-limit 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 palmosolutions/eloquent-eager-limit 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 49
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 11
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-01-24