O Guia Definitivo do Yii 1.1
O Guia Definitivo do Yii 1.1
O Guia Definitivo do Yii 1.1
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Depois que o méto<strong>do</strong> CDbCommand::query() gerar uma instância de CDbDataReader,<br />
você pode recuperar os registros <strong>do</strong> resulta<strong>do</strong> através <strong>do</strong> méto<strong>do</strong> CDbDataReader::read(),<br />
repetidamente. Você também pode utilizar um CDbDataReader dentro de um loop<br />
foreach, para recuperar os registros, um a um:<br />
$dataReader=$command->query();<br />
// executan<strong>do</strong> read() repetidamente, até que ele retorne false<br />
while(($row=$dataReader->read())!==false) { ... }<br />
// utilizan<strong>do</strong> foreach para "navegar" por cada registro encontra<strong>do</strong><br />
foreach($dataReader as $row) { ... }<br />
// recuperan<strong>do</strong> to<strong>do</strong>s os registros de uma vez, em um vetor<br />
$rows=$dataReader->readAll();<br />
Nota: Diferente <strong>do</strong> méto<strong>do</strong> query(), to<strong>do</strong>s os méto<strong>do</strong>s queryXXX(), retornam os da<strong>do</strong>s<br />
diretamente. Por exemplo, o méto<strong>do</strong> queryRow() retorna um vetor representan<strong>do</strong> o<br />
primeiro registro <strong>do</strong> resulta<strong>do</strong> da consulta.<br />
Utilizan<strong>do</strong> Transações (Transactions)<br />
Quan<strong>do</strong> uma aplicação executa algumas consultas, seja len<strong>do</strong> ou gravan<strong>do</strong> informações<br />
no banco de da<strong>do</strong>s, é importante garantir que todas as consultas tenham si<strong>do</strong><br />
executadas. Nesse caso, uma transação, representada por uma instância de<br />
CDbTransaction, pode ser iniciada:<br />
• Inicie a transação.<br />
• Execute as consultas, uma a uma. Todas as atualizações no banco de da<strong>do</strong>s não<br />
são visíveis aos outros.<br />
• Encerre a transação. Nesse momento, as atualizações tornam-se visíveis, caso a<br />
transação tenha encerra<strong>do</strong> com sucesso.<br />
• Se uma das consultas falhar, toda a transação é desfeita.<br />
O fluxo acima pode ser implementa<strong>do</strong> como no código a seguir: