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.
$posts=Post::model()->with(<br />
'author.profile',<br />
'author.posts',<br />
'categories')->together()->findAll();<br />
A consulta acima será executada em um único coman<strong>do</strong> SQL. Sem o méto<strong>do</strong> together,<br />
serão necessárias três consultas: uma irá fazer a junção das tabelas Post, User e Profile,<br />
outra irá fazer a junção de User ePost e a última irá fazer a junção de Post, PostCategory<br />
e Category.<br />
Opções de Consultas Relacionais<br />
Nós mencionamos que pode-se especificar algumas opções adicionais na declaração de<br />
um relacionamento. Essas opções, especificadas na forma de pares nome-valor, são<br />
utilizadas para personalizar as consultas relacionais. Elas estão resumidas abaixo:<br />
• select: uma lista de colunas que serão selecionadas nas classes AR relacionadas.<br />
Por padrão, seu valor é '*', que significa todas as colunas. Quan<strong>do</strong> utilizada em<br />
expressões os nomes das colunas devem se identifica<strong>do</strong>s com um aliasToken<br />
(apeli<strong>do</strong> para tabela), (por exemplo COUNT(??.name) AS nameCount).<br />
• condition: representa a cláusula WHERE. Não tem nenhum valor por padrão. Note<br />
que, para evitar conflitos entre nomes de colunas iguais, referencias a colunas<br />
precisão ser identificadas por um aliasToken, (por exemplo, ??.id=10).<br />
• params: os parâmetros que serão vincula<strong>do</strong>s ao coman<strong>do</strong> SQL gera<strong>do</strong>. Eles devem<br />
ser informa<strong>do</strong>s em um vetor, com pares de nome-valor. Essa opção está disponível<br />
desde a versão 1.0.3.<br />
• on: representa a cláusula ON. A condição especificada aqui será adicionada à<br />
condição de junção, utilizan<strong>do</strong>-se o opera<strong>do</strong>r AND. Note que, para evitar conflitos<br />
entre nomes de colunas iguais, os nomes delas devem ser diferencia<strong>do</strong>s com a<br />
utilização de um aliasToken, (por exemplo, ??.id=10). Essa opção não pode ser<br />
utilizada em relações <strong>do</strong> tipo MANY_MANY. Ela está disponível desde a versão<br />
1.0.2.<br />
• order: representa a cláusula ORDER BY. Não tem nenhum valor por padrão. Note<br />
que, para evitar conflitos entre nomes de colunas iguais, referencias a colunas<br />
precisão ser identificadas por um aliasToken, (por exemplo, ??.age DESC).<br />
• with: uma lista de objetos filhos relaciona<strong>do</strong>s que deverão ser carrega<strong>do</strong>s juntos com<br />
esse objeto. Seja cuida<strong>do</strong>so, pois utilizar esta opção de forma inapropriada poderá<br />
gerar um loop infinito nos relacionamentos.<br />
• joinType: o tipo de junção nesse relacionamento. Por padrão é LEFT OUTER JOIN.<br />
• aliasToken: é o marca<strong>do</strong>r <strong>do</strong> prefixo da coluna. Ele será substituí<strong>do</strong> pelo apeli<strong>do</strong> da<br />
tabela correspondente para diferenciar as referencias às colunas. Seu padrão é '??.'.<br />
• alias: o apeli<strong>do</strong> para a tabela associada a esse relacionamento. Essa opção está<br />
disponível desde a versão 1.0.1. Por padrão é null, indican<strong>do</strong> que o apeli<strong>do</strong> para a<br />
tabela será gera<strong>do</strong> automaticamente. Um alias é diferente de uma aliasToken, uma<br />
vez que esse último é só um marca<strong>do</strong>r que será substituí<strong>do</strong> pelo verdadeiro apeli<strong>do</strong><br />
para a tabela.<br />
• together: especifica se a tabela associada com esse relacionamento deverá ser<br />
forçada a juntar-se a tabela primária. Essa opção só faz senti<strong>do</strong> em relacionamentos<br />
<strong>do</strong> tipo HAS_MANY e MANY_MANY. Se está opção não for utilizada, ou seu valor for<br />
false, cada relacionamento HAS_MANY e MANY_MANY terão suas próprias