/** * 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; } }
/** * 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!!'); } }