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.

tipo MANY_MANY como a combinação <strong>do</strong> BELONGS_TO com um HAS_MANY. Por<br />

exemplo, Post pertence a várias Category e Category tem vários Post.<br />

A declaração de relacionamentos no AR é feita sobrescreven<strong>do</strong> o méto<strong>do</strong> relations() da<br />

classe CActiveRecord. Esse méto<strong>do</strong> retorna um vetor com as configurações <strong>do</strong><br />

relacionamento. Cada elemento <strong>do</strong> vetor representa um relacionamento com o seguinte<br />

formato:<br />

NomeRel'=>array('TipoDoRelacionamento', 'NomeDaClase',<br />

'ChaveEstrangeira', ...opções adicionais)<br />

Onde NomeRel é o nome <strong>do</strong> relacionamento; TipoDoRelacionamento especifica o tipo <strong>do</strong><br />

relacionamento, que pode ser uma dessas quatro constantes: self::BELONGS_TO,<br />

self::HAS_ONE, self::HAS_MANY e self::MANY_MANY; NomeDaClasse é o nome da<br />

classe AR relacionada com essa classe; eChaveEstrangeira especifica a(s) chave(s)<br />

estrangeira(s) envolvidas no relacionamento. Opções adicionais podem ser especificadas<br />

ao final de cada vetor de relacionamento (a ser explica<strong>do</strong>).<br />

O código a seguir mostra como declaramos os relacionamentos para as classes User e<br />

Post:<br />

class Post extends CActiveRecord<br />

{<br />

public function relations()<br />

{<br />

return array(<br />

'author'=>array(self::BELONGS_TO, 'User', 'authorID'),<br />

'categories'=>array(self::MANY_MANY, 'Category', 'PostCategory<br />

(postID, categoryID)'),<br />

);<br />

}<br />

}<br />

class User extends CActiveRecord<br />

{<br />

public function relations()<br />

{<br />

return array(<br />

'posts'=>array(self::HAS_MANY, 'Post', 'authorID'),<br />

'profile'=>array(self::HAS_ONE, 'Profile', 'ownerID'),<br />

);<br />

}<br />

}

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

Saved successfully!

Ooh no, something went wrong!