function load(Criteria $criteria) { $sql = "SELECT * FROM " . constant($this->activeRecord . '::TABLENAME'); if ($criteria) { $expression = $criteria->dump(); if ($expression) { $sql .= ' WHERE ' . $expression; } $order = $criteria->getProperty('order'); $limit = $criteria->getProperty('limit'); $offset = $criteria->getProperty('offset'); if ($order) { $sql .= ' ORDER BY ' . $order; } if ($limit) { $sql .= ' LIMIT ' . $limit; } if ($offset) { $sql .= ' OFFSET ' . $offset; } } if ($conn = Transaction::get()) { Transaction::log($sql); $result = $conn->query($sql); $results = array(); if ($result) { while ($row = $result->fetchObject($this->activeRecord)) { $results[] = $row; } } return $results; } else { throw new Exception('Não há transação ativa!!'); } }
/** * Carrega um conjunto de objetos (collection) da base de dados * @param $criteria = objeto do tipo TCriteria */ function load(Criteria $criteria) { // instancia a instrução de SELECT $sql = "SELECT * FROM " . constant($this->activeRecord . '::TABLENAME'); // obtém a cláusula WHERE do objeto criteria. if ($criteria) { $expression = $criteria->dump(); if ($expression) { $sql .= ' WHERE ' . $expression; } // obtém as propriedades do critério $order = $criteria->getProperty('order'); $limit = $criteria->getProperty('limit'); $offset = $criteria->getProperty('offset'); // obtém a ordenação do SELECT if ($order) { $sql .= ' ORDER BY ' . $order; } if ($limit) { $sql .= ' LIMIT ' . $limit; } if ($offset) { $sql .= ' OFFSET ' . $offset; } } // obtém transação ativa if ($conn = Transaction::get()) { // registra mensagem de log Transaction::log($sql); // executa a consulta no banco de dados $result = $conn->query($sql); $results = array(); if ($result) { // percorre os resultados da consulta, retornando um objeto while ($row = $result->fetchObject($this->activeRecord)) { // armazena no array $results; $results[] = $row; } } return $results; } else { // se não tiver transação, retorna uma exceção throw new Exception('Não há transação ativa!!'); } }