2010-05-27 2 views
0

Comment puis-je obtenir le résultat suivant dans CakePHP:Exécution d'un modèle :: trouver en boucle dans CakePHP v1.3

Dans ma demande un sujet est lié à la catégorie, la catégorie est liée à la ville et la ville est enfin lié à dire

en d'autres termes:
sujet appartient à la catégorie, la catégorie appartient à la ville, la ville appartient à dire ..

maintenant dans l'action index du contrôleur de sujet que je veux savoir tous les sujets et il est ville et état.

Comment puis-je faire cela.

Je peux facilement le faire en utilisant une requête personnalisée ($ this-> Model-> query()), mais je serai confronté à des problèmes de pagination.

J'ai essayé de faire comme ça

function index() 
{ 
    $this->Topic->recursive = 0; 
    $topics = $this->paginate(); 
    for($i=0; $i<count($topics);$i++) 
    { 
     $topics[$i]['City'] = $this->Topic->Category->City->find('all', array('conditions' => array('City.id' => $topics[$i]['Category']['city_id']))); 
    } 
    $this->set(compact('topics')); 
} 

La méthode que je l'ai adopté n'est pas un bon (requête en cours d'exécution dans une boucle)

En utilisant la propriété récursive et la mise à la valeur la plus élevée (2) va dégrader la performance et ne va pas me donner des informations d'état.

Comment vais-je résoudre ce problème?

S'il vous plaît aider

Merci

Répondre

1

Eh bien, vous pouvez faire deux choses:

  1. Définissez l'option recursive à 3 (non recommandé pour les raisons que vous avez déjà mentionné).
  2. Utilisez le comportement Containable. Les documents que j'ai liés pour fournir un ensemble assez solide d'instructions d'utilisation, je pense.

Malheureusement, je ne peux pas parler de l'impact du comportement Containable sur la pagination. Lorsque vous utilisez le comportement de confinement, vous n'avez pas besoin de définir le niveau récursif.

+0

:-) Merci. Ce comportement est génial, a résolu mon problème. Vous pouvez définir la matrice de pagination de telle sorte qu'elle paginera votre ensemble de résultats sans problème, vous avez seulement besoin de configurer votre tableau correctement. –

+0

Bonnes choses. Ma propre expérience avec Containable a toujours été positive (c'est le moins que je puisse dire), donc je suis content que cela ait bien marché pour votre problème. –

+0

ouais, plus tôt (gâteau v1.2) Je n'étais pas au courant de ce comportement et j'ai laissé tomber un projet à cause de cette fonctionnalité. Maintenant, quand j'ai fait face à ce problème, j'ai décidé de ne pas me rendre et de m'en tenir à cakephp. Je suis plus qu'heureux d'apprendre sur ce comportement car il a répondu à beaucoup de mes questions (liées au cadre) que j'avais plus tôt. –

1

Il sera ajusté automatiquement par cakephp.

+0

hmm ... vrai, tu as raison .. –

Questions connexes