/** * Método que retorna um objeto contendo o modelo de consulta básica. * * @return Select Uma consulta básica */ public function select() { $sqlTurma = new SqlTurma(); $sqlTopico = new SqlTopico(); $t = $this->tg->getTabela(true); $select = new Select(); return $select->from($this->tg->getTabela())->columns(array("{$t}_status" => 'status', "{$t}_data_aula" => 'data_aula', '*'))->join('public.turma', array('pk_turma' => "{$this->tg->getTabela()}.fk_turma"))->import($sqlTurma->select())->join('apostilas.conteudo', array('pk_conteudo' => "{$this->tg->getTabela()}.fk_conteudo"))->import($sqlTopico->select()); }
/** * Método que executa um select com base em um objeto Select informado * @param Select $select A consulta a ser realizada * @return ResultSetHydrator Um objetos contendo a resposta da interação */ public function selectObj(Select $select) { if (!$select->tabelaIsset()) { $select->from($this->tabela); } //Executando a query e definindo os databind $prepare = $this->pdo->prepare($select); //Executando a validação do PDO foreach ($select->getWhere()->getColunas() as $coluna => $valor) { if (!isset($this->colunas[$coluna])) { //Este trecho deve ser reavaliado pois impede a busca usando como base //colunas de tabelas referenciadas por inner throw new SqlException("Uma das colunas informadas não é válida(select - {$coluna})", 10); } $prepare->bindValue(":{$coluna}", $valor, $this->colunas[$coluna]->getTipo()); } //Executando de fato a consulta if (!$prepare->execute()) { throw new SqlException("Ocorreu um erro ao tentar executar a consulta"); } //Retorno da consulta return new ResultSetHydrator($this->objeto, $prepare); }
/** * Método que retorna todos os livros cadastrados * @param Filtros $filtros Objeto do sistema de filtros * @return ResultSetHydrator Objeto contendo a resposta da consulta */ public function listarTodos(Filtros $filtros) { $where = "ano={$this->anoLetivo} " . "and apostilas.livro.status=" . Status::ATIVO; $select = new Select(); return $this->tg->selectObj($select->from(array("livros" => $this->select()->from("apostilas.livro")->distinct("pk_livro")->where($where)))->order("livro_desc")); }