1. Go to this page and download the library: Download czim/laravel-filter 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/ */
czim / laravel-filter example snippets
php
$filterValues = [ 'attributename' => 'value', ... ];
$filter = new SomeFilter($filterValues);
// get an Eloquent builder query for a model
$query = SomeEloquentModel::query();
// apply the filter to the query
$filteredQuery = $filter->apply($query);
// normal get() call on the now filtered query
$results = $filteredQuery->get();
php
protected function strategies(): array
{
return [
// as a ParameterFilter instance
'parameter_name_here' => new \Czim\Filter\ParameterFilters\SimpleString(),
// as a ParameterFilter class string
'another_parameter' => \Czim\Filter\ParameterFilters\SimpleString::class,
// as an anonymous function
'yet_another' => function($name, $value, $query) {
return $query->where('some_column', '>', $value);
},
// as an array (passable to call_user_func())
'and_another' => [ $this, 'someMethodYouDefined' ],
];
}
php
/**
* @param string $name the keyname of the parameter/strategy
* @param mixed $value the value for this parameter set in the filter data
* @param EloquentBuilder $query
* @param FilterInterface $filter the filter from which the strategy was invoked
*/
public function apply(string $name, $value, $query);
php
protected function applyParameter(string $name, $value, $query)
{
switch ($name) {
case 'parameter_name_here':
// your implementation of the filter ...
return $query;
...
}
// as a safeguard, you can call the parent method,
// which will throw exceptions for unhandled parameters
parent::applyParameter($name, $value, $query);
}
php
protected function countStrategies(): array
{
return [
'parameter_name_here' => new \Czim\Filter\ParameterCounters\SimpleInteger(),
...
];
}
php
/**
* @param string $parameter countable name
* @param EloquentBuilder $query
*/
protected function countParameter(string $parameter, $query)
{
// your implementation for each $parameter name
}
php
protected function countStrategies(): array
{
return [
'parameter_name_here' => new ParameterCounters\YourParameterCounter()
];
}