Adicionando as colunas direto no find tanto para tabela, belongsTo ou hasMany com bindModel

abril 7, 2015 em CakePhp por Sândler

As perguntas mais comuns é como faço para restringir a quantidade de colunas que traz na minha busca de uma tabela específica.

Exemplo de Tabelas:

Pagina – id, nome, data_cadastro
Promocao – id, id_pagina, nome, valor, data_cadastro
PromocaoConteudo – id, id_promocao, conteudo, data_cadastro

 

Então quando buscar a promoção teremos:

belongsTo = ‘Pagina’;
hasMany = ‘PromocaoConteudo’;

 

Estes exemplos abaixo, imaginamos que as tabelas já estão vinculadas na Model.

 

Trazendo tudo de tudo:
$promocoes = $this->Promocao->find(‘all’);

 

Vamos imaginar que queira somente algumas colunas de cada tabela que esteja vinculada a Promoção.

$this->Promocao->bindModel(array(‘hasMany’=>array(‘PromocaoConteudo’=>array(‘fields’=>array(‘PromocaoConteudo.conteudo’)))));
$promocoes = $this->Promocao->find(‘all’, array(‘fields’=>array(‘Promocao.nome’,’Promocao.valor’,’Pagina.nome’)));

 

Veja que quando é um BelongsTo é possível colocar nos fields do próprio find da promoção, mas quando é um HasMany, é necessário colocar com o bind como se fosse fazer o vínculo novamente.