Msieprawski\ResourceTable\Generators\Collection::_prepareBuilder PHP Method

_prepareBuilder() private method

Prepares builder object before calling get method on it
private _prepareBuilder ( )
    private function _prepareBuilder()
    {
        $builder = $this->_builder;
        $params = Input::get();
        /*
         * START filters
         */
        if ($this->renderFilterForm()) {
            foreach ($this->_columns as $columnData) {
                $column = new Column($columnData);
                if (!$column->searchable()) {
                    // Not a searchable column - skip it
                    continue;
                }
                if (!isset($params['resource_table_' . $column->index()])) {
                    // Searched string not found in GET query
                    continue;
                }
                $value = $params['resource_table_' . $column->index()];
                if (!$value || !is_string($value)) {
                    // Skip empty values
                    continue;
                }
                $value = $this->_prepareFilterValue($columnData, $value);
                switch ($column->searchType()) {
                    // Use simple WHERE = 'value' for selects
                    case 'select':
                        if (ResourceTable::ALL_SELECT_VALUES_KEY == $value) {
                            // Any value in select - skip it
                            continue;
                        }
                        $builder = $this->_addQueryCondition($builder, $column->queryConditionType(), $column->getDatabaseName(), '=', $value);
                        break;
                        // Use LIKE '%value%' for strings
                    // Use LIKE '%value%' for strings
                    case 'string':
                    default:
                        $builder = $this->_addQueryCondition($builder, $column->queryConditionType(), $column->getDatabaseName(), 'LIKE', '%' . $value . '%');
                        break;
                }
            }
        }
        /*
         * END filters
         */
        /*
         * START pagination
         */
        if ($this->_paginate) {
            if (isset($params['per_page']) && is_numeric($params['per_page']) && $params['per_page'] > 0) {
                // Get per_page from GET
                $this->_perPage = (int) $params['per_page'];
            }
            if (isset($params['page']) && is_numeric($params['page']) && $params['page'] > 1) {
                // Get page from GET
                $this->_page = (int) $params['page'];
            }
            $toSkip = $this->_page * $this->_perPage - $this->_perPage;
            // A the end set pagination
            $this->_totalItems = $this->_getCountForPagination($builder);
            $builder = $builder->skip($toSkip)->take($this->_perPage);
        }
        /*
         * END pagination
         */
        /*
         * START sort
         */
        if ($this->_validSort($params)) {
            // If sort configuration is valid then set it
            $this->sort($params['order_by'], strtoupper($params['order_dir']));
        }
        // Set sort configuration
        $sort = $this->getSort();
        if ($sort['index'] && $sort['dir']) {
            $builder = $builder->orderBy($sort['index'], $sort['dir']);
        }
        /*
         * END sort
         */
        $this->_builder = $builder;
    }