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.
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 />
}