/** * Retorna um conjunto de linhas da tabela. * * @param string|array|null $fields : os campos da tabela a serem retornados. * Caso seja nulo, utilizamos o SQL wildcard '*', que retornará todos os campos. * @param string $order : a ordenação da busca "{<nome_campo><ASC|DESC>}*" * @param int count : a quantidade de linhas a retornar * @param int offset : a linha inicial a partir da qual começar a buscar (0-based) * @return array */ public function getAll($fields = null, $order = null, $count = null, $offset = null) { $currentIntegrityCheck = $this->integrityCheck; if ($fields == null) { $fields = $this->getCols(); } else { /* Caso não estejamos selecionando todas as colunas, é preciso que o * objeto Row retornado seja somente leitura. Isso se deve ao fato de * que ele não conterá toda a informação necessária para realizar uma * operação de UPDATE, por exemplo. */ $diff = array_diff($this->getCols(), $fields); if (!empty($diff)) { // Fará com que os objetos Row gerados sejam somente leitura... $this->integrityCheck = false; } } $this->driver->select($this->getName(), $order, $count, $offset, $fields); $ret = array(); $result = $this->driver->fetchAll(); foreach ($result as $rowData) { $ret[] = $this->doCreateRow($rowData, true); } // Retorna integrityCheck ao seu valor anterior... $this->integrityCheck = $currentIntegrityCheck; return $ret; }