Nette\Database\Table\Selection::accessColumn PHP Метод

accessColumn() публичный Метод

public accessColumn ( $key, $selectColumn = TRUE ) : boolean
Результат boolean if selection requeried for more columns.
    public function accessColumn($key, $selectColumn = TRUE)
    {
        if (!$this->cache) {
            return FALSE;
        }
        if ($key === NULL) {
            $this->accessedColumns = FALSE;
            $currentKey = key((array) $this->data);
        } elseif ($this->accessedColumns !== FALSE) {
            $this->accessedColumns[$key] = $selectColumn;
        }
        if ($selectColumn && $this->previousAccessedColumns && ($key === NULL || !isset($this->previousAccessedColumns[$key])) && !$this->sqlBuilder->getSelect()) {
            if ($this->sqlBuilder->getLimit()) {
                $generalCacheKey = $this->generalCacheKey;
                $sqlBuilder = $this->sqlBuilder;
                $primaryValues = [];
                foreach ((array) $this->rows as $row) {
                    $primary = $row->getPrimary();
                    $primaryValues[] = is_array($primary) ? array_values($primary) : $primary;
                }
                $this->emptyResultSet(FALSE);
                $this->sqlBuilder = clone $this->sqlBuilder;
                $this->sqlBuilder->setLimit(NULL, NULL);
                $this->wherePrimary($primaryValues);
                $this->generalCacheKey = $generalCacheKey;
                $this->previousAccessedColumns = [];
                $this->execute();
                $this->sqlBuilder = $sqlBuilder;
            } else {
                $this->emptyResultSet(FALSE);
                $this->previousAccessedColumns = [];
                $this->execute();
            }
            $this->dataRefreshed = TRUE;
            // move iterator to specific key
            if (isset($currentKey)) {
                while (key($this->data) !== NULL && key($this->data) !== $currentKey) {
                    next($this->data);
                }
            }
        }
        return $this->dataRefreshed;
    }

Usage Example

Пример #1
0
	protected function accessColumn($key, $selectColumn = TRUE)
	{
		$this->table->accessColumn($key, $selectColumn);
		if ($this->table->getDataRefreshed() && !$this->dataRefreshed) {
			$this->data = $this->table[$this->getSignature()]->data;
			$this->dataRefreshed = TRUE;
		}
	}
All Usage Examples Of Nette\Database\Table\Selection::accessColumn