/* Este post é continuação do Usando o Zend_Db para conectar no MySql */
Vimos no post anterior que para se conectar com banco de dados através do Zend_Db é necessário configuração através do o Zend_Config. Mais neste mesmo post somente mostrei como conectar e usar sintaxes de MySql. Mais se seu sistema ser multi-banco terá que abstrair as consultas de modo que o próprio Zend faça o trabalho de criar as Querys.
É ai que entra o Zend_Db_Select que faz o trabalho de criar as querys conforme o banco de dados selecionado. Então a conexão continua igual a anterior, conforme abaixo:
require_once 'Zend/Config.php';
require_once 'Zend/Db.php';
$params ['host'] = 'localhost';
$params ['dbname'] = 'zendbrasil';
$params ['username'] = 'root';
$params ['password'] = '';
$database ['adapter'] = 'Mysqli';
$database ['params'] = $params;
$data ['database'] = $database;
$config = new Zend_Config ( $data );
$db = Zend_Db::factory($config->database);
Vamos agora pensar no mesmo exemplo que tínhamos, mais agora migrar do fetchAll para o select.
$sql = "SELECT * FROM `teste` ";
$result = $db->fetchAll($sql);
A sintaxe básica do select é:
// Criar uma instancia do Zend_Db_Select
$select = $db->select();
// Adicionando a cláusula from
$select->from( ...tabelas e colunas... )
// Os critérios
$select->where( ...critérios... )
// A Ordem
$select->order( ...Ordem da resposta... );
Então a consulta acima fica assim:
$select = $db->select();
$select->from('teste');
$stmt = $select->query();
$result = $stmt->fetchAll();
Agora podemos apenas alterando o Zend_Config conectar fazer esta consulta em qualquer banco de dados que o Zend_Db tenha suporte.
O método $select->query(); retorna o sql montada segundo os padrões.
Veja parte do print_r do $stmt:
Zend_Db_Statement_Mysqli Object
(
[_keys:protected] => Array
(
[0] => USUARIO_ID
[1] => USUARIO_NOME
)
[_values:protected] => Array
(
[0] => 4
[1] => Usuario 4
)
....................
[_sqlSplit:protected] => Array
(
[0] => SELECT `teste`.* FROM `teste`
)
[_sqlParam:protected] => Array
(
[0] => SELECT `teste`.* FROM `teste`
)
)
Então nela executamo o método fetchAll() que retorna a consulta.
<?php
require_once 'Zend/Config.php';
require_once 'Zend/Db.php';
$params ['host'] = 'localhost';
$params ['dbname'] = 'zendbrasil';
$params ['username'] = 'root';
$params ['password'] = '';
$database ['adapter'] = 'Mysqli';
$database ['params'] = $params;
$data ['database'] = $database;
$config = new Zend_Config ( $data );
$db = Zend_Db::factory($config->database);
$select = $db->select();
$select->from('teste');
$stmt = $select->query();
$result = $stmt->fetchAll();
print_r($result);
A resposta será:
Array
(
[0] => Array
(
[USUARIO_ID] => 1
[USUARIO_NOME] => Usuario 1
)
[1] => Array
(
[USUARIO_ID] => 2
[USUARIO_NOME] => Usuario 2
)
[2] => Array
(
[USUARIO_ID] => 3
[USUARIO_NOME] => Usuario 3
)
[3] => Array
(
[USUARIO_ID] => 4
[USUARIO_NOME] => Usuario 4
)
)


