aneeskhan47 / laravel-pagination-merge
合并多个 Laravel 分页实例
v1.0.6
2024-03-23 10:28 UTC
Requires
- php: ^7.2|^8.0|^8.1|^8.2
- illuminate/pagination: ~5|^6|^7|^8|^9|^10|^11.0
- illuminate/support: ~5|^6|^7|^8|^9|^10|^11.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.8
- orchestra/testbench: ^3.0|^4.0|^5.0|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- phpunit/phpunit: ^8.5|^9.0|^10.0
README
Laravel 5/6/7/8/9/10/11 的分页合并
一个简单的 Laravel 分页合并包,允许您合并多个 ->paginate()
实例。
一些背景
在我工作的一个项目中,我必须处理类似的事情,在一个页面上,我必须显示两种类型的分页并按 created_at 字段排序的出版物。在我的情况下,这是一个 帖子 模型和 事件 模型(以下简称为出版物)。
唯一的区别是我不想从数据库中获取所有出版物,然后合并并排序结果,正如您所想象的,如果我们有数百个出版物,这将引发性能问题。
因此,我想到了一个更方便的方法,即分别对每个模型进行分页,然后合并并排序。这就是我建立这个包的原因。
这个包受到了这个 StackOverflow 答案 的极大启发。
⚡️ 安装
Laravel 5.5+
使用 Composer 安装此包
composer require aneeskhan47/laravel-pagination-merge
服务提供者将自动发现。您无需将其添加到任何地方。
Laravel 5.0 到 5.4
使用 Composer 安装此包
composer require aneeskhan47/laravel-pagination-merge
在 config/app.php
中找到 providers
键并注册 PaginationMerge 服务提供者。
'providers' => [ // ... Aneeskhan47\PaginationMerge\PaginationMergeServiceProvider::class, ]
在 config/app.php
中找到 aliases
键并注册 PaginationMerge 别名。
'aliases' => [ // ... 'PaginationMerge' => Aneeskhan47\PaginationMerge\Facades\PaginationMerge::class, ]
🚀 使用
use App\Models\Post; use App\Models\Event; use Aneeskhan47\PaginationMerge\Facades\PaginationMerge; class PublicationsController extends Controller { /** * Display a listing of the resource. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function index(Request $request) { $events = Event::latest()->paginate(5); $posts = Post::latest()->paginate(5); $publications = PaginationMerge::merge($events, $posts) ->sortByDesc('created_at') ->get(); // since get() will return \Illuminate\Pagination\LengthAwarePaginator // you can continue using paginator methods like these etc: $publications->withPath('/admin/users') ->appends(['sort' => 'votes']) ->withQueryString() ->fragment('users') ->setPageName('publications_page'); return view('publications.index', compact('publications')); } }
💰 支持开发
你喜欢这个包吗?通过捐赠来支持它
- PayPal: 捐赠
🧪 测试
composer test
📝 变更日志
请参阅 CHANGELOG 了解最近更改的更多信息。
🤝 贡献
请参阅 CONTRIBUTING 了解详细信息。
🔒 安全性
如果您发现任何与安全相关的问题,请通过电子邮件 kingkhan2388@gmail.com 而不是使用问题跟踪器。
🙌 致谢
📜 许可证
MIT 许可证(MIT)。请参阅 许可证文件 了解更多信息。
🔧 Laravel 包模板
此包是使用 Laravel 包模板 生成的。