2010-11-23 18 views
0

Je souhaite récupérer des données avec le niveau récursif 3. Le problème est qu'il ajoute tous les 8 modèles liés mais j'ai besoin de données provenant de seulement trois modèles de données. Y at-il un moyen d'ignorer certains modèles ou spécifiquement demandé à certains modèles, mais pas tous. quelque chose comme useModel ('Model1', 'Model2')?CakePHP: Comment spécifier des modèles lors de la récupération des données?

+0

indice rapide: recherche de libération dans le manuel – c0rnh0li0

+0

Lier ou annuler ne fonctionne que lorsque le premier niveau est récursif. – Sharj

Répondre

5

Il est préférable d'utiliser le comportement Containable, ce qui vous permettra de spécifier trouver des conditions comme celle-ci:

$this->Post->find('all', array(
    'contain' => array(
     'Tag', 
     'Comment' => array(
      'User') 
      ) 
     ) 
    ); 

également, conjointement avec cela, il est bon de mettre $ récursive à -1 dans votre AppModel.

class AppModel extends Model { 
    var $recursive = -1; 
    var $actsAs = array('Containable'); 
} 

Cela vous donnera le contrôle plus vous avez besoin et vous assurer que vos requêtes ne gonflent que plus les relations sont ajoutés à vos modèles au fil du temps.

+0

Il est inutile de définir $ recursive à -1. Juste oubliez qu'il a toujours existé et utilisez toujours Containable. – Leo