protected function applyResourceOptions(Builder $queryBuilder, array $options = [])
    {
        if (empty($options)) {
            return $queryBuilder;
        }

        extract($options);

        if (isset($includes)) {
            if (!is_array($includes)) {
                throw new InvalidArgumentException('Includes should be an array.');
            }

            $queryBuilder->with($includes);
        }

        if (isset($filter_groups)) {
            $filterJoins = $this->applyFilterGroups($queryBuilder, $filter_groups);
        }

        if (isset($sort)) {
            if (!is_array($sort)) {
                throw new InvalidArgumentException('Sort should be an array.');
            }

            if (!isset($filterJoins)) {
                $filterJoins = [];
            }

            $sortingJoins = $this->applySorting($queryBuilder, $sort, $filterJoins);
        }

        if (isset($limit)) {
            $queryBuilder->limit($limit);
        }

        if (isset($page)) {
            if (! isset($limit)) {
                throw new InvalidArgumentException('A limit is required when using page.');
            }

            $queryBuilder->offset($page * $limit);
        }

        if (isset($distinct)) {
            $queryBuilder->distinct();
        }

        return $queryBuilder;
    }
protected function applyResourceOptions(Builder $queryBuilder, array $options = [])
    {
        if (empty($options)) {
            return $queryBuilder;
        }

        extract($options);

        if (isset($includes)) {
            if (!is_array($includes)) {
                throw new InvalidArgumentException('Includes should be an array.');
            }

            $queryBuilder->with($includes);
        }

        if (isset($filter_groups)) {
            $filterJoins = $this->applyFilterGroups($queryBuilder, $filter_groups);
        }

        if (isset($sort)) {
            if (!is_array($sort)) {
                throw new InvalidArgumentException('Sort should be an array.');
            }

            if (!isset($filterJoins)) {
                $filterJoins = [];
            }

            $sortingJoins = $this->applySorting($queryBuilder, $sort, $filterJoins);
        }

        if (isset($limit)) {
            $queryBuilder->limit($limit);
        }

        if (isset($page)) {
            if (! isset($limit)) {
                throw new InvalidArgumentException('A limit is required when using page.');
            }

            $queryBuilder->offset($page * $limit);
        }

        if (isset($distinct)) {
            $queryBuilder->distinct();
        }

        return $queryBuilder;
    }
protected function applyResourceOptions ( Builder $ queryBuilder , array $ options = [ ] ) { if ( empty ( $ options ) ) { return $ queryBuilder ; } extract ( $ options ) ; if ( isset ( $ includes ) ) { if ( ! is_array ( $ includes ) ) { throw new InvalidArgumentException ( 'Includes should be an array.' ) ; } $ queryBuilder -> with ( $ includes ) ; } if ( isset ( $ filter_groups ) ) { $ filterJoins = $ this -> applyFilterGroups ( $ queryBuilder , $ filter_groups ) ; } if ( isset ( $ sort ) ) { if ( ! is_array ( $ sort ) ) { throw new InvalidArgumentException ( 'Sort should be an array.' ) ; } if ( ! isset ( $ filterJoins ) ) { $ filterJoins = [ ] ; } $ sortingJoins = $ this -> applySorting ( $ queryBuilder , $ sort , $ filterJoins ) ; } if ( isset ( $ limit ) ) { $ queryBuilder -> limit ( $ limit ) ; } if ( isset ( $ page ) ) { if ( ! isset ( $ limit ) ) { throw new InvalidArgumentException ( 'A limit is required when using page.' ) ; } $ queryBuilder -> offset ( $ page * $ limit ) ; } if ( isset ( $ distinct ) ) { $ queryBuilder -> distinct ( ) ; } return $ queryBuilder ; }
Apply resource options to a query builder
@param  Builder $queryBuilder
@param  array  $options
@return Builder
Apply resource options to a query builder