%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/OrderByCriteria.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 OrderByCriteria extends BaseCriteria
{
    /**
     * @param Model|DatabaseBuilder|EloquentBuilder|RememberableBuilder $model
     *
     * @return mixed
     */
    protected function applyToQuery($model)
    {
        if ($this->request->has('orderBy')) {
            $orderable = explode(",", $this->request->get('orderBy'));
            foreach ($orderable as $value) {
                $q = explode(":", $value);
                $key = $q[0];
                try {
                    $order = $q[1];
                    if ($order != 'asc' && $order != 'desc') {
                        $order = 'asc';
                    }
                } catch (\Exception $e) {
                    $order = 'asc';
                }

                $model = $model->orderBy($key, $order);
            }
        }
        return $model;
    }
}

Zerion Mini Shell 1.0