20.11.2014 Views

O Guia Definitivo do Yii 1.1

O Guia Definitivo do Yii 1.1

O Guia Definitivo do Yii 1.1

SHOW MORE
SHOW LESS

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:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!