awstalib / filterable-qm
可过滤查询或模型包
2.0.1
2024-01-27 11:09 UTC
Requires
- php: >=7.2
- illuminate/support: ^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
This package is auto-updated.
Last update: 2024-09-30 13:27:03 UTC
README
FilterableQm 是一个 Laravel 扩展包,它提供了一系列特性以无缝地过滤和分页 Eloquent 模型。它包括用于过滤模型的 FilterableQm
特性和用于便捷分页的 PaginateQm
特性。
安装
您可以通过 Composer 安装此包。运行以下命令
composer require awstalib/filterable-qm
使用方法
在您的 Eloquent 模型中使用 FilterableQm 特性
use Awstalib\FilterableQm\FilterableQm; class YourModel extends Model { use FilterableQm; // Your model logic here }
在您的模型查询构建器中使用 applyFilters 方法
$filteredData = YourModel::query()->applyFilters($filters)->get();
在您的 Eloquent 模型中使用 PaginateQm 特性
use Awstalib\FilterableQm\PaginateQm; class YourModel extends Model { use PaginateQm; protected $filterItem=['col1','col2']; // Your model logic here //You can extend filter with your own filter public function extendedFilter($query, $filterItem, $value) { if ($filterItem === 'account_currency' && !empty($value)) { $query->whereHas('account', function ($query) use ($value) { $query->where('currency_id', $value); }); } if($filterItem === 'account_number' && !empty($value)) { $query->whereHas('account', function ($query) use ($value) { $query->where('account_number', $value); }); } return $query; } }
在您的控制器中利用 paginateModel 方法
public function index(Request $request) { $data = $this->paginateModel(new YourModel(), $request, false); return ApiResponse::success($data->data, 'Data retrieved successfully', null, $data->count); }
版本历史
1.0.0 (2024年1月7日)
- 首次发布。
- 添加了
FilterableQm
和PaginateQm
特性。 - 基本的过滤和分页功能。
贡献
请自由地通过分叉此项目并创建 pull request 来对此项目做出贡献。
许可证
此包是开源的,并且可以在 MIT 许可证下使用。