| 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));    }}
 |