1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- <?php
- /**
- * Created by PhpStorm.
- * User: Administrator
- * Date: 2019/4/30 0030
- * Time: 14:17
- */
- namespace App\Http\Filters;
- use Illuminate\Http\Request;
- abstract class Filter
- {
- /**
- * @var 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 ThreadFilters instance.
- *
- * @param Request $request
- */
- public function __construct(Request $request)
- {
- $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) {
- if (method_exists($this, $filter)) {
- $this->$filter($value);
- }
- }
- return $this->builder;
- }
- /**
- * Fetch all relevant filters from the request.
- *
- * @return array
- */
- public function getFilters()
- {
- return array_filter($this->request->only($this->filters));
- }
- }
|