Estou tentando limitar os campos que são retornados quando utilizo o
findAll()
Consigo limitar normalmente os campos retornados de seu modelo,
porem,
não consigo o mesmo para os modelos relacionados.
Exemplo:
Gostaria de ter este resultado:
Array
(
[0] => Array
(
[Post] => Array
(
[id] => 1
[title] => Titulo aqui
)
[Tag] => Array
(
[0] => Array
(
[id] => 1
[tag_name] => Uma tag
)
...
Acho que já lí algo a respeito, porem não encontrei aqui no Grupo.
Será que terei de passar uma query SQL diretamente?
Obrigado.
$this->set('posts',
$this->Post->findAll(null, array('Post.id', 'Post.titulo',
'Tag.id', 'Tag.tag_name')));
$arrayFields = array( 'Model.campo', 'Model.campo2' );
findAll( $arrayConditions, $arrayFields )
Sempre funcionou.
Falopa!
Desta forma, pegaria campos especificos apenas do primeiro modelo,
gostaria de tambem filtrar os campos dos modelos que se relacionam com
o ele.
E desta forma não funciona:
$arrayFields = array( 'Model.campo', 'Model2.campo' );
findAll( $arrayConditions, $arrayFields )
$this->Post->unbindModel(array('hasMany' => array('Tag')));
Se for assim que você fez sua associação... Ou seja, dentro do
unbindModel você passa exatamente a forma e o modelo que você quer
retirar da associação naquele momento, assim os resultados vão voltar
sem as associações mais básicas...
--
Estava testando, e existem alguns tipos de relacionamentos que
podem ser passados para o parametro "$filds" do metodo findAll() o
seguinte:
$arrayFields = array( 'Model.campo', 'Model2.campo' );
Mas não são todos os tipos de relacionamentos.
Como não anotei e não precisei mais, esqueci.
Essa tarde farei os testes e reportarei aqui na lista.
On 19 Out, 20:06, "eber.frei...@gmail.com" <eber.frei...@gmail.com>
wrote: