1. Go to this page and download the library: Download aldemeery/sieve 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/ */
aldemeery / sieve example snippets
public function index(Request $request)
{
$query = Product::query();
if ($request->has('color')) {
$query->where('color', $request->get('color'));
}
if ($request->has('condition')) {
$query->where('condition', $request->get('condition'));
}
if ($request->has('price')) {
$direction = $request->get('price') === 'highest' ? 'desc' : 'asc';
$query->orderBy('price', $direction);
}
return $query->get();
}
public function index(Request $request)
{
return Product::filter($request)->get();
}
use Aldemeery\Sieve\Concerns\Filterable;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
use Filterable;
// ...
}
public function index(Request $request)
{
return Product::filter($request)->get();
}
namespace App\Http\Filters\Product;
use Aldemeery\Sieve\Filter;
use Illuminate\Database\Eloquent\Builder;
class ColorFilter extends Filter
{
/**
* Values mappings.
*
* @var array
*/
protected $mappings = [
// Silence is golden...
];
/**
* Filter records based on a given value.
*
* @param \Illuminate\Database\Eloquent\Builder $builder Eloquent builder instance.
* @param string $value The resolved value of the filtration key sent in the query string.
*
* @return void
*/
public function filter(Builder $builder, $value)
{
//
}
}
/**
* Filter records based on a given value.
*
* @param \Illuminate\Database\Eloquent\Builder $builder Eloquent builder instance.
* @param string $value The resolved value of the filtration key sent in the query string.
*
* @return void
*/
public function filter(Builder $builder, $value)
{
// Assuming the URL is https://example.com/products?color=red
// $value here is equal to 'red'
return $builder->where('color', $value);
}
public function filter(Builder $builder, $value)
{
return $builder->orderBy('price', $value);
}
public function filter(Builder $builder, $value)
{
return $builder->whereHas('category', function($query) use ($value){
return $query->where('name', $value);
});
}
namespace App\Http\Filters\Product;
use Aldemeery\Sieve\Filter;
use Illuminate\Database\Eloquent\Builder;
class ColorFilter extends Filter
{
/**
* Values mappings.
*
* @var array
*/
protected $mappings = [
'lowest' => 'asc',
'highest' => 'desc',
];
/**
* Filter records based on a given value.
*
* @param \Illuminate\Database\Eloquent\Builder $builder Eloquent builder instance.
* @param string $value The resolved value of the filtration key sent in the query string.
*
* @return void
*/
public function filter(Builder $builder, $value)
{
// URL: https://example.com/products?price=lowest
// $value is automatically set to be 'asc' instead of 'lowest'
if ($this->validateValue($value)) {
$builder->orderBy('price', $value);
}
}
/**
* Determine if a given value is valid.
*
* @param string $value Value to validate.
*
* @return bool
*/
private validateValue($value)
{
return in_array($value, ['asc', 'desc']);
}
}
public function index(Request $request)
{
return Product::filter($request,[
// "color" here is the key to be used in the query string
// e.g. https://example.com/products?color=red
"color" => \App\Http\Filters\Product\ColorFilter::class,
])->get();
}
namespace App;
use Aldemeery\Sieve\Concerns\Filterable;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
use Filterable;
/**
* List of individual filters to be used by the model.
*
* @return array
*/
protected function filters()
{
return [
'color' => \App\Http\Filters\Product\ColorFilter::class,
];
}
}
public function index(Request $request)
{
// The ColorFilter is automatically applied.
return Product::filter($request)->get();
}
namespace App\Http\Filters\Product;
use Aldemeery\Sieve\FilterBag;
class ProductFilters extends FilterBag
{
/**
* Filters to be applied.
*
* @var array
*/
protected static $filters = [
//
];
}
namespace App;
use Aldemeery\Sieve\Concerns\Filterable;
use App\Http\Filters\Product\ProductFilters;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
use Filterable;
/**
* Filter bag used by the model.
*
* @return string
*/
protected function filterBags()
{
return [
ProductFilters::class,
];
}
}
public function index(Request $request)
{
// The filters from ProductFilters are automatically applied.
return Product::filter($request)->get();
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.