Archive for December, 2008

Utilizando o Zend_Db_Select

Thursday, December 4th, 2008

O uso da classe Zend_Db_Select é muito simples, o intuito dela é proporcionar ao desenvolvedor a possibilidade de fazer consultas complexas sem a necessidade de escrever código SQL, e sim utilizando um objeto, abaixo estarei mostrando alguns mini-exemplos.

Consulta simples, como um SELECT * FROM `users`

$select = new Zend_Db_Select();

$select->from(?users?);

$rs = $select->query();

$data = $rs->fetchAll();

Consulta com inserção de clausula WHERE, como um SELECT * FROM `users` WHERE `id` > 10:

$select = new Zend_Db_Select();

$select->from(?users?);

$select->where(?id > ??, 10);

$rs = $select->query();

$data = $rs->fetchAll();

· Consulta com seleção de campos e cláusula WHERE, como um SELECT id, name FROM `users` WHERE id > 10:

$select = new Zend_Db_Select();

$select->from(?users?);

$select->columns(?id, name?);

$select->where(?id > ??, 10);

$rs = $select->query();

$data = $rs->fetchAll();

· Consulta com seleção de campos e cláusula WHERE e INNER JOIN, como um SELECT `users`.`id`, `users`.`name`, `pictures`.`address` FROM `users` INNER JOIN `pictures` ON `pictures`.`user_id` = `users`.`id` WHERE id > 10;

$select = new Zend_Db_Select();

$select->from(?users?);

$select->columns(?users.id, users.name, pictures.address?);

$select->joinInner(?picures?, ?picures.user_id = user.id?);

$select->where(?id > ??, 10);

$rs = $select->query();

$data = $rs->fetchAll();

Além dos métodos utilizados acima a api da classe na qual o Drimio_Db_Select extende em http://framework.zend.com/apidoc/core/Zend_Db/Select/Zend_Db_Select.html

Profiling de consultas utilizando Firebug, FirePHP e Zend_Db_Profiler_Firebug

Wednesday, December 3rd, 2008

Um recurso muito interessante do navegador Firefox são suas extensões, e para os desenvolvedores web uma das extensões mais importantes é o Firebug, com ele você consegue fazer o profiling da camada de visão da sua aplicação, podendo por exemplo monitorar todas as requisições Ajax, seus cabeçalhos e dados, tempo de carregamento de cada arquivo da interface e o tamanho de cada um. Mas ele não para por aí, utilizando o FirePHP que é uma extensão do Firefox mas ele trabalha sobre Firebug, você consegue fazer profiling das camadas que são processadas no servidor, como a camada de modelo, que é o caso utilizado neste post. Abaixo estarei mostrando de maneira simples e objetiva como utilizar este recurso, assumindo que você já tenha instalado o Firefox, o Firebug e o FirePHP, então vamos lá:

No seu arquivo de bootstrap, após criar a sua conexão com o banco de dados, você deverá criar um profile e defini-lo como o profiler daquelas conexão:

$connection = Zend_Db::factory($adapter, $config);$profiler = new Zend_Db_Profiler_Firebug('All DB Queries');

$profiler->setEnabled(true);

$connection->setProfiler($profiler);

Após isso, basta ter o firebug e o firephp ativados para conferir o profiling de suas consultas no console do firebug.

Clicky Web Analytics