示例#1
0
 /**
  * Retorna um valor para ser definido como valor da cheve primária da 
  * entidade(tabela) de acordo com a constante KEY_TYPE definida na classe
  * T{Entidade}
  * @return int | str
  */
 private function createPK()
 {
     if (isset($this->data[$this->getPrimaryKey()])) {
         return $this->data[$this->getPrimaryKey()];
     }
     if ($this->typePK() == 'MD5') {
         return md5(uniqid($this->getEntity(), TRUE));
     }
     if ($this->typePK() == 'STRING' || $this->typePK() == 'ID') {
         return uniqid();
     }
     if ($this->typePK() == 'SERIAL') {
         $sq1 = new SQLSelect();
         $sq1->addColumn('max(' . $this->getPrimaryKey() . ') as ' . $this->getPrimaryKey());
         $sq1->setEntity($this->getEntity());
         $resu1t = $this->getConnection()->query($sq1->getStatement());
         $row = $resu1t->fetch();
         return (int) $row[0] + 1;
     }
 }
示例#2
0
 /**
  * método count()
  * Retorna a quantidade de objetos da base de dados
  * que satisfazem um determinado critério de seleção.
  * @param $criteria = objeto do tipo TCriteria
  */
 function count(SQLExpression $criteria)
 {
     // instancia instrução de SELECT
     $sql = new SQLSelect();
     $sql->addColumn('count(*)');
     $sql->setEntity(constant($this->class . '::TABLENAME'));
     // atribui o critério passado como parâmetro
     $sql->setCriteria($criteria);
     $this->sql = $sql->getStatement();
     if ($conn = Connection::get()) {
         $row = array();
         $result = $conn->query($sql->getStatement());
         if ($result) {
             $row = $result->fetch();
         }
         return $row[0];
     } else {
         // se não tiver transação, retorna uma exceção
         throw new Exception('Não há transação ativa!!');
     }
 }