2010-08-10 20 views
1

J'ai un modèle de contenu qui appartient à Catégories, hasMany éditeurs, et Publisher belongsTo ville. Il ya aussi un formulaire de recherche où quelqu'un sélectionne dans une liste déroulante quelle catégorie à voir et quelle ville. Mais comment puis-je combiner ces deux en une seule condition de pagination? Je veux dire que je ne peux pas faire quelque chose comme:CakePHP recherche dans hasMany relations

$this->paginate('Content',array('conditions' =>array('Category.id'=>$category, 
'City.id'=>$city))); 

car pour obtenir des villes gâteau effectue une requête différente.

Je ne peux pas faire quelque chose comme:

$this->paginate('Content',array('conditions' =>array('Category.id'=>$category), 
'contain'=>array('Publisher.City'=>array('conditions'=>array(City.id'=>$city))))); 

car cela recherche en fonction de la catégorie et filtrer les résultats de la ville selon ville $.

Je sais que je peux faire quelque chose comme:

$this->Content->Publisher->City->find(...) 

mais cela va changer la sortie de mes données paginés.

Ce que je fais habituellement est d'écrire ma requête personnalisée où je LEFT rejoindre tous les modèles et filtrer les résultats dans WHERE. Mais je voulais savoir s'il y avait plus de gâteau (sic)!

grâce

Répondre

0

j'ai vécu la même chose quand je d'abord essayer de créer un moteur de recherche simple avec relation hasMany.

J'ai utilisé plusieurs $this->find() et l'ai assigné dans une variable puis sur le code de pagination j'ai utilisé $this->paginate(array_merge(name of the variables used in $this->find()));.

espère que cela vous aidera ...

~ gio

Questions connexes