https://github.com/devmakerlab/laravel-filters
Need some filters? This package is based on the Repository Design Pattern to let you create specific queries easily.
https://github.com/devmakerlab/laravel-filters
database-manager design-patterns filters laravel php
Last synced: 5 months ago
JSON representation
Need some filters? This package is based on the Repository Design Pattern to let you create specific queries easily.
- Host: GitHub
- URL: https://github.com/devmakerlab/laravel-filters
- Owner: devmakerlab
- Created: 2021-07-23T17:01:41.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2024-01-26T11:27:28.000Z (over 2 years ago)
- Last Synced: 2025-05-28T18:07:30.062Z (about 1 year ago)
- Topics: database-manager, design-patterns, filters, laravel, php
- Language: PHP
- Homepage:
- Size: 33.2 KB
- Stars: 17
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# DevMakerLab/Laravel-Filters
Need some filters? This package is based on the Repository Design Pattern to let you create specific queries easily.
* [Installation](#installation)
* [Usage](#usage)
* [Example](#example)
## Installation
⚠️ Requires >= PHP 7.4 ⚠️
```shell
composer require devmakerlab/laravel-filters
```
## Usage
This package offers an abstract class `AbstractFilterableRepository` which needs to be extended to implement the features of this package.
PeopleService.php
```php
addFilter(OldPeopleFilter::class)
->get(['age' => 60]);
```
OldPeopleFilter.php
```php
where('age', '>=', $this->age);
}
}
```
PeopleRepository.php
```php
databaseManager = $databaseManager;
}
public function get(array $args): array
{
$queryBuilder = $this->databaseManager->table('people')
->select(['firstname', 'lastname', 'age', 'gender']);
$this->applyFilters($queryBuilder, $args);
$people = $queryBuilder->get();
return $this->transform($people);
}
public function transform(Collection $people): array
{
$people->transform(function ($person) {
return [
'name' => sprintf('%s %s', $person->lastname, $person->firstname),
'age' => $person->age,
'gender' => $person->gender,
];
});
return $people->toArray();
}
}
```
## Example
[Usage Example](https://github.com/devmakerlab/laravel-filters/tree/master/tests/Example) of DevMakerLab/Laravel-Filters package.

