PHP code example of osi-open-source / lumen-query-builder-filters
1. Go to this page and download the library: Download osi-open-source/lumen-query-builder-filters library. Choose the download type require. 2. Extract the ZIP file and open the index.php. 3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
osi-open-source / lumen-query-builder-filters example snippets
use Osi\QueryBuilder\Middleware\SearchRequest;
$app->middleware([
SearchRequest::class
]);
use App\Models\User;
use Illuminate\Contracts\Pagination\LengthAwarePaginator;
use Osi\QueryBuilder\Filter;
/** @var Filter */
protected $filter;
/**
* Base constructor.
* @param Filter $filter
*/
public function __construct(Filter $filter)
{
$this->filter = $filter;
}
/**
* @param array $filters
* @return LengthAwarePaginator
*/
public function list(array $filters = []): LengthAwarePaginator
{
return $this->searchQuery($filters)->paginate($filters['perPage'] ?? null);
}
/**
* @param array $filters
* @param Builder|null $query
* @param Closure|null $middleClosure
* @return Builder
*/
public function searchQuery(array $filters = [], ?Builder $query = null, ?Closure $middleClosure = null): Builder
{
$queryBuilder = $query ?? self::newModelInstance(User::class)->newQuery();
if ($queryBuilder instanceof Model) {
$queryBuilder = $queryBuilder->newQuery();
}
return $this->filter->search($filters, $queryBuilder, $middleClosure);
}
bootstrap/app.php