Executando comandos SQL no CakePHP

8 05 2009

Depois de muito pesquisar e me irritar com uma coisa que parece ser tão básica resolvi postar aqui o que eu tive dificuldades para encontrar na internet.

Eis o cenário:

Estou desenvolvendo um software com a finalidade de alimentar e ou sincronizar bancos de dados. Ele deve fazer o seguinte, quando o usuário acessar a url (http://www.site.com.br/sincronizacoes/sinc) o sistema lê vários bancos e várias tabelas, analisa algumas condições, prepara os dados e alimenta algumas tabelas de com esses dados.

Alguns adeptos do CakePHP poderiam dizer… “porque vc não usa o find()…. porque vc não usa os relacionamentos do Cake….etc…etc…”. Tudo bem! Acho até que seria possivel fazer com mais alguns dias de estudo do cake.

O problema é que não tinha esses dias e eu REALMENTE gostaria de usar as minhas queryes.

Porque?… São queryes enormes e eu já as tenho todas prontas, eu não queria reescrever tudo.

Como eu disse, é um processo simples mas acabei não encontrando uma documentação nem um relato preciso para o que eu queria. então vamos lá!

Como executar um comando SQL qualquer usando o Cake e obter o seu resultado

1)  Crie o seu controller:

class SincronizacoesController extends AppController {
 var $uses = array("Sincronizacao");
 function index(){
 }
 function sinc(){
 $this->set('vw_dados',$this->Sincronizacao->executaSinc());
 }
}

2) Crie o seu model:

class Sincronizacao extends AppModel{

 var $useTable = false;       

    # Esse é o segredo....
    # o seu model não vai usar nenhuma tabela...
    # apenas a conexão com o banco

 function index(){

 }

 public function executaSinc(){
     return($this->query("Execute aqui qualquer comando SQL que desejar"));
 }
}

Por fim, crie o view normalmente e trate os dados nele

<h1>Ufa!</h1>
<b>
 <?php pr($vw_dados); ?>
</b>

Pronto!… muito simples… mas se alguém não explicar fica complicado de se adivinhar. 😉

Até a próxima

Anúncios

Ações

Information

4 responses

25 05 2010
Tarciso

Também andei apanhando pra isso no cake.. no meu caso eu peguei um site iniciado, mas só tinha alguns cadastros, qdo precisei rodar uma consulta minha, foi aquele sofrimento… rsrrsr

legal a dica do $useTable=false; não sabia, eu estava declarando as funções no modulo de outras tabelas;

9 09 2010
Marcelo Martins

Olá amigos, estou iniciando no Cake e gostaria de saber como executo o site, ou melhor, o formulário de preenchimento de cadastro de usuario.
Estou seguindo um tutorial da IBM , e a dica lá é para lançar da seguinte forma:

Experimente

Todas as partes se encaixaram no devido lugar. É hora de trazer Tor para a vida. Inicie seu navegador e comece.

Carregue a visualização de registro acessando http://localhost/users/register. Você deverá ver algo semelhante à Figura 4.

Mas , ocorre a seguinte msg no browser:

Not Found

The requested URL /users/register was not found on this server.

Alguém tem uma dica ? Como executar um ficheiro com a extensão *.ctp ?

10 09 2010
Alberane

Olá Marcelo,

Confira as configurações do seu arquivo .htacces, pela sua descrição não foi possível confirmar qual servidor está usando e em qual sistema operacional.

verifique se seu servidor (Apache/IIS/etc) está configurado corretamente com rewrite_mod.

Os arquivos .ctp são os arquivos de templates do cake… não será necessário acessá-los ou executá-los. Internamente o cake fará isso pra você.

Basicamente os arquivo .ctp são arquivos html/css/php normais… apenas a extensão é diferente, mera padronização do cake.

13 03 2015
filiperoberto

Muito bom cara, eu tenho um site onde faço cadastro de personagens e quero mudar ele para salvar cada revisão feita. Acho que usar o find nessa mudança vai me dificultar muito. Vou tentar essa tua dica, valeu!

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s




%d blogueiros gostam disto: