Edit File: BaseFilters.php
<?php namespace App\Http\Filters; use Illuminate\Support\Str; abstract class BaseFilters { /** * @var \Illuminate\Http\Request */ protected $request; /** * The Eloquent builder. * * @var \Illuminate\Database\Eloquent\Builder */ protected $builder; /** * Registered filters to operate upon. * * @var array */ protected $filters = []; /** * Create a new BaseFilters instance. * */ public function __construct() { $this->request = request(); } /** * Apply the filters. * * @param \Illuminate\Database\Eloquent\Builder $builder * @return \Illuminate\Database\Eloquent\Builder */ public function apply($builder) { $this->builder = $builder; foreach ($this->getFilters() as $filter) { $value = $this->request->query($filter); $methodName = $this->request->has($filter) ? Str::camel($filter) : 'default' . Str::studly($filter); if (method_exists($this, $methodName)) { $this->$methodName($value); } } return $this->builder; } /** * Fetch all relevant filters from the request. * * @return array */ public function getFilters() { return property_exists($this, 'filters') && is_array($this->filters) ? $this->filters : []; } }
Back to File Manager