O Guia Definitivo do Yii 1.1
O Guia Definitivo do Yii 1.1
O Guia Definitivo do Yii 1.1
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
No exemplo acima, utilizamos o méto<strong>do</strong> find em conjunto com Post::model(). Lembre-se<br />
que o méto<strong>do</strong> estático model() é obrigatório em todas as classes AR. Esse méto<strong>do</strong> retorna<br />
uma instância AR que é utilizada para acessar méto<strong>do</strong>s a nível de classe (algo pareci<strong>do</strong><br />
com méto<strong>do</strong>s estáticos de classe) em um contexto de objeto.<br />
Se o méto<strong>do</strong> find encontra um registro que satisfaça as condições da consulta, ele irá<br />
retornar uma instância cujas propriedades irão conter os valores <strong>do</strong> registro específico.<br />
Podemos então ler os valores carrega<strong>do</strong>s normalmente como fazemos com as<br />
propriedades de um objeto. Por exemplo, echo $post->title;.<br />
O méto<strong>do</strong> find irá retornar null se nenhum registro for encontra<strong>do</strong>.<br />
Ao executar o méto<strong>do</strong> find, utilizamos os parâmetros $condition e $params para<br />
especificar as condições desejadas. Nesse caso, $condition pode ser uma string<br />
representan<strong>do</strong> uma cláusula WHERE, <strong>do</strong> SQL, e $params é um vetor com parâmetros<br />
cujos valores devem ser vincula<strong>do</strong>s a marca<strong>do</strong>res na $condition. Por exemplo:<br />
// encontra o registro com postID=10<br />
$post=Post::model()->find('postID=:postID', array(':postID'=>10));<br />
Nota: No exemplo acima, precisamos escapar a referência para a coluna postID, em<br />
certos SGBDs. Por exemplo, se estivermos utilizan<strong>do</strong> o PostgreSQL, deveríamos ter<br />
escrito a condição como "postID"=:postID, porque este banco de da<strong>do</strong>s, por padrão,<br />
não diferencia letras maiúsculas e minúsculas nos nomes de colunas.<br />
Podemos também utilizar o parâmetro $condition para especificar condições de pesquisa<br />
mais complexas. Em vez de uma string, $condition pode ser uma instância de<br />
CDbCriteria, o que permite especificar outras condições além <strong>do</strong> WHERE. Por exemplo:<br />
$criteria=new CDbCriteria;<br />
$criteria->select='title'; // seleciona apenas a coluna title<br />
$criteria->condition='postID=:postID';<br />
$criteria->params=array(':postID'=>10);<br />
$post=Post::model()->find($criteria); // $params não é necessario<br />
Note que, ao utilizar CDbCriteria como condição para a pesquisa, o parâmetro $params<br />
não é mais necessário, uma vez que ele pode ser especifica<strong>do</strong> diretamente na instância<br />
de CDbCriteria, como no exemplo acima.<br />
Uma maneira alternativa de utilizar CDbCriteria é passar um vetor para o méto<strong>do</strong> find. As<br />
chaves e valores <strong>do</strong> vetor correspondem as propriedades e valores da condição,<br />
respectivamente. O exemplo acima pode ser reescrito da seguinte maneira: