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!!');
     }
 }
Example #2
0
 /**
  * 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!!');
     }
 }