/* 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
)
)

Baixe aqui todos os exemplos deste site.

Nenhum comentário

Deixe uma resposta