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

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:

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

Saved successfully!

Ooh no, something went wrong!