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