Relations [Resolvido]

Meus modelos possuem a função relations(), mas eu ainda não consegui tirar vantagem disso. Sempre que preciso de um atributo de outra classe que tenha relação eu acabo fazendo uma busca nova. Como funcionam, para que servem essas relations, e existe uma maneira mais fácil para ter acesso aos atributos de uma classe relacionada?

Valeu.

Eu recomendo a leitura do guia do Yii a respeito do AR relacional (ou o original, em inglês).

O uso do giix pode te ajudar também com a geração dos modelos já com este método pronto.

As relations, basicamente, servem para facilitar a codificação de seu sistema.

Uma vez que você não vai precisar ficar fazendo JOINs entre modelos.

Como num blog por exemplo… Onde usuários possuem postagens.

Em uma postagem por exemplo, podes pegar quaisquer dados do usuário, apenas fazendo por exemplo:


$postagem->usuario->nome

Onde usuario, seria o nome de sua relation no modelo de Postagem e nome um atributo do modelo Usuario.

O link passado pelo mentel, vai te dar toda a base necessária para começar a usar as relations.

Estas quando bem usadas, podem acelerar bastante o tempo de desenvolvimento.

Além delas, gosto muito de trabalhar com escopos, no link que o mentel passou também fala-se deles.

É outra forma de se trabalhar de forma legal com modelos.

Bom enfim… Dá uma lida lá e se tiver alguma dúvida, pergunta aqui que a gente se ajuda.

Entendi, massa isso ai.

E quando a relation é do tipo HAS_MANY ou MANY_MANY, tem como eu pegar uma lista/array dos objetos relacionados?

valeu

Tem sim.

Por exemplo…

Fazendo o caminho inverso, onde um usuário possui várias postagens…

Você só faria: $usuario->postagens onde postagens seria a sua relation.

O detalhe aí, é que não podes por exemplo, fazer $usuario->postagens->titulo, pois como seriam várias postagens, tens de iterar sobre elas, algo +/- como:


foreach($usuario->postagens as $postagem) {

     echo $postagem->titulo; // Só um exemplo...

}