PHPackages                             andrewdyer/filtering - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Search &amp; Filtering](/categories/search)
4. /
5. andrewdyer/filtering

ActiveLibrary[Search &amp; Filtering](/categories/search)

andrewdyer/filtering
====================

1.0.1(3y ago)015MITPHPPHP  ^7.4|^8.0

Since Aug 22Pushed 1y ago1 watchersCompare

[ Source](https://github.com/andrewdyer/filtering)[ Packagist](https://packagist.org/packages/andrewdyer/filtering)[ RSS](/packages/andrewdyer-filtering/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (2)Dependencies (2)Versions (4)Used By (0)

Filtering
=========

[](#filtering)

A super tidy and easy to extend solution for filtering Laravel database results with a query string.

 [![Total Downloads](https://camo.githubusercontent.com/41a80f72e1cb2a18a9b047267e320b0d6e5f12928cecdb5d49ddb83aca1d9bf6/68747470733a2f2f706f7365722e707567782e6f72672f616e64726577647965722f66696c746572696e672f646f776e6c6f6164733f7374796c653d666f722d7468652d6261646765)](https://packagist.org/packages/andrewdyer/filtering) [![Latest Stable Version](https://camo.githubusercontent.com/125369756dff326c4999f90e6e5406a76782406fae72de73a30281e21f1e3b9d/68747470733a2f2f706f7365722e707567782e6f72672f616e64726577647965722f66696c746572696e672f763f7374796c653d666f722d7468652d6261646765)](https://packagist.org/packages/andrewdyer/filtering) [![License](https://camo.githubusercontent.com/0d0c3752349669e0609c25bb89e03e4bb3528a583b36166451519edfaeb0acd5/68747470733a2f2f706f7365722e707567782e6f72672f616e64726577647965722f66696c746572696e672f6c6963656e73653f7374796c653d666f722d7468652d6261646765)](https://packagist.org/packages/andrewdyer/filtering)

License
-------

[](#license)

Licensed under MIT. Totally free for private or commercial projects.

Installation
------------

[](#installation)

```
composer require andrewdyer/filtering

```

Basic Usage
-----------

[](#basic-usage)

```
$courses = Course::filter($request->getQueryParams())->get();
```

### Creating Filters

[](#creating-filters)

```
namespace App\Filters;

use Anddye\Filtering\Filter;
use Illuminate\Database\Eloquent\Builder;

class AccessFilter extends Filter
{
    public function filter(Builder $builder, $value): Builder
    {
        return $builder->where('free', $value);
    }
}
```

### Creating Filterers

[](#creating-filterers)

```
namespace App\Filterers;

use Anddye\Filtering\Filterer;
use App\Filters\AccessFilter;

class CourseFilterer extends Filterer
{
    protected array $filters = [
        'access' => AccessFilter::class,
    ];
}
```

### Create Filter Scope

[](#create-filter-scope)

```
namespace App\Models;

use App\Filterers\CourseFilterer;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;

class Course extends Model
{
    public function scopeFilter(Builder $builder, array $queryParams): Builder
    {
        return (new CourseFilterer())->filter($builder, $queryParams);
    }
}
```

Support
-------

[](#support)

If you're using this package, I'd love to hear your thoughts! Feel free to contact me on [Twitter](https://twitter.com/andyer92).

Found a bug? Please report it using the [issue tracker](https://github.com/andrewdyer/filtering/issues), or better yet, fork the repository and submit a pull request.

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance31

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity54

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~427 days

Total

3

Last Release

503d ago

Major Versions

1.0.1 → 2.x-dev2024-12-22

PHP version history (2 changes)1.0.0PHP  ^7.4|^8.0

2.x-devPHP &gt;=8.3

### Community

Maintainers

![](https://www.gravatar.com/avatar/666597ea6e46748a89fe8764d1a45b4d0da97daf1bb1e9770ea34ae41f706d08?d=identicon)[andrewdyer](/maintainers/andrewdyer)

---

Top Contributors

[![andrewdyer](https://avatars.githubusercontent.com/u/8114523?v=4)](https://github.com/andrewdyer "andrewdyer (20 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/andrewdyer-filtering/health.svg)

```
[![Health](https://phpackages.com/badges/andrewdyer-filtering/health.svg)](https://phpackages.com/packages/andrewdyer-filtering)
```

###  Alternatives

[algolia/scout-extended

Scout Extended extends Laravel Scout adding algolia-specific features

4186.3M6](/packages/algolia-scout-extended)[swisnl/laravel-fulltext

Fulltext indexing and searching for Laravel

184104.5k5](/packages/swisnl-laravel-fulltext)[kyslik/laravel-filterable

Using URL query strings to filter Eloquent queries.

11539.0k](/packages/kyslik-laravel-filterable)[devnoiseconsulting/laravel-scout-postgres-tsvector

PostgreSQL Full Text Search Driver for Laravel Scout

58110.1k](/packages/devnoiseconsulting-laravel-scout-postgres-tsvector)[vanry/laravel-scout-tntsearch

包含中文分词的 Laravel Scout TNTSearch 驱动，支持 scws, phpanalysis 和 jieba 分词。

17811.8k1](/packages/vanry-laravel-scout-tntsearch)[gtk/larasearch

A driver based solution to searching your Eloquent models supports Laravel 5.2 and Elasticsearch engine.

133.9k](/packages/gtk-larasearch)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
