janakkapadia/filterable
Composer 安装命令:
composer require janakkapadia/filterable
包简介
Enhance your Laravel app with dynamic, customizable filtering for Eloquent models. This package provides an easy setup for multi-parameter filtering, custom logic, and relationship support—perfect for building flexible, data-driven features like admin panels and reports.
README 文档
README
A custom Laravel package for dynamic filtering of models, built to simplify the process of filtering data in Laravel applications.
Installation
-
Install via Composer
Run the following command to add the package to your Laravel project:
composer require janakkapadia/filterable
-
Usage
This package provides a command to generate filter models dynamically.
Creating a New Filter Model:
php artisan filter:model {ModelName} -
Add Filter Trait to Your Model
use JanakKapadia\Filterable\Traits\Filter; class YourModel extends Model { use Filter; // Additional model code... }
-
Usage In Controller
Basic filtering:
public function index(Request $request) { $data = YourModel::filter()->get(); }
With parentheses wrapping where conditions:
public function index(Request $request) { $data = YourModel::filter(true)->get(); }
-
Request Example
To filter and sort the data, you can make a request like this:
GET URL/your-model?sort_by=id&search=title&status=active -
Example Usage For Model Filter File
In your filter model (YourModelFilter.php), you can define both filter and sort methods:
class YourModelFilters extends Filter { // Define your filterable fields protected array $filters = ['search', 'status']; // Define your sortable fields protected array $sort = ['sort_by']; // Sort method public function sort_by($column): void { $this->builder->orderBy($column); } // Filter methods public function search($keyword): void { $this->builder->where(function ($query) use ($keyword) { $query->where('field1', 'like', "%$keyword%") ->orWhere('field2', 'like', "%$keyword%"); }); } public function status($status): void { $this->builder->where('status', $status); } }
-
Query Examples
Without parentheses (
filter()):SELECT * FROM your_models WHERE field1 LIKE '%keyword%' OR field2 LIKE '%keyword%' AND status = 'active' ORDER BY id DESC
With parentheses (
filter(true)):SELECT * FROM your_models WHERE (field1 LIKE '%keyword%' OR field2 LIKE '%keyword%') AND (status = 'active') ORDER BY id DESC
The parentheses version ensures proper grouping of conditions and can prevent unexpected results when combining multiple filters.
-
Advanced Features
- Parentheses Wrapping: Use
filter(true)to wrap where conditions in parentheses for complex queries - Filter Chaining: You can chain multiple filter operations together
- Separate Filter and Sort Fields: Define filterable fields in
$filtersarray and sortable fields in$sortarray
- Parentheses Wrapping: Use
janakkapadia/filterable 适用场景与选型建议
janakkapadia/filterable 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 16 次下载、GitHub Stars 达 1, 最近一次更新时间为 2024 年 11 月 08 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 janakkapadia/filterable 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 janakkapadia/filterable 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 16
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 13
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2024-11-08