An open API service indexing awesome lists of open source software.

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.

Awesome Lists containing this project

README

          




Build Status
Code Coverage
Latest Version on Packagist

# 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.