awstalib/filterable-qm

可过滤查询或模型包

2.0.1 2024-01-27 11:09 UTC

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日)

  • 首次发布。
  • 添加了 FilterableQmPaginateQm 特性。
  • 基本的过滤和分页功能。

贡献

请自由地通过分叉此项目并创建 pull request 来对此项目做出贡献。

许可证

此包是开源的,并且可以在 MIT 许可证下使用。