%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/news/vendor/czim/laravel-repository/src/Criteria/Common/
Upload File :
Create Path :
Current File : /var/www/html/news/vendor/czim/laravel-repository/src/Criteria/Common/OrderBy.php

<?php
namespace Czim\Repository\Criteria\Common;

use Czim\Repository\Criteria\AbstractCriteria;
use Illuminate\Database\Query\Builder;

class OrderBy extends AbstractCriteria
{
    const DEFAULT_DIRECTION = 'asc';

    /**
     * @var array
     */
    protected $orderClauses = [];

    /**
     * @param string|array  $columnOrArray     may be either a single column, in which the second parameter
     *                                         is used for direction, or an array of 'column' => 'direction' values
     * @param string        $direction         'asc'/'desc'
     */
    public function __construct($columnOrArray, $direction = self::DEFAULT_DIRECTION)
    {
        if ( ! is_array($columnOrArray)) {
            $columnOrArray = [ $columnOrArray => $direction ];

        } else {
            // make sure it is a proper array

            $newColumns = [];

            foreach ($columnOrArray as $column => $direction) {

                if (is_numeric($column)) {
                    $column    = $direction;
                    $direction = self::DEFAULT_DIRECTION;
                }

                $newColumns[$column] = $direction;
            }

            $columnOrArray = $newColumns;
        }

        $this->orderClauses = $columnOrArray;
    }


    /**
     * @param Builder $model
     * @return mixed
     */
    public function applyToQuery($model)
    {
        foreach ($this->orderClauses as $column => $direction) {

            $model = $model->orderBy($column, $direction);
        }

        return $model;
    }

}

Zerion Mini Shell 1.0