%PDF- %PDF-
Direktori : /var/www/html/news/app/Repositories/Base/Criteria/ |
Current File : /var/www/html/news/app/Repositories/Base/Criteria/SearchCriteria.php |
<?php namespace App\Repositories\Base\Criteria; use Illuminate\Database\Eloquent\Builder as EloquentBuilder; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Query\Builder as DatabaseBuilder; use Watson\Rememberable\Query\Builder as RememberableBuilder; /** * Class OrderByCriteria */ class SearchCriteria extends BaseCriteria { /** * @param Model|DatabaseBuilder|EloquentBuilder|RememberableBuilder $model * * @return mixed */ protected function applyToQuery($model) { if ($this->request->has('search')) { $searchable = explode(";", $this->request->get('search')); foreach ($searchable as $value) { $q = explode(":", $value); $key = $q[0]; $operator = $this->parseOperator($q[1]); if ($operator ==='like') { $value = "%{$q[2]}%"; } else { $value = $q[2]; } $model = $model->where($key, $operator, $value); } } return $model; } private function parseOperator($operator) { switch ($operator){ case 'like': return 'like'; break; case 'eq': return '='; break; case 'ne': return '<>'; break; case 'l': return '<'; break; case 'g': return '>'; break; case 'ge': return '>='; break; case 'le': return '<='; break; } } }