2010-07-19 21 views
0

-je utiliser CakePHP 1.2.6 et ont les relations suivantes:comportement maîtrisable ne retourne pas de profondeur 3 - CakePHP

Showcase HABTM utilisateur belongsTo Galleryitem hasOne image

J'essaie d'obtenir toutes les données relatives à un Showcase, et donc tous ses utilisateurs avec leur Galleryitem -> Image. J'utilise la requête suivante:

$showcase = $this->Showcase->find('first', 
    array('conditions'=>array('Showcase.id'=>$id), 
     'contain'=> array(
      'User' => array(
       'Galleryitem' => array(
        'Image' 
       ) 
      ) 
     ) 
    ) 
); 

Cela ne les retours et tableau vide de Galleryitem et donc pas du tout Image records. Si je effectuez les opérations suivantes:

$showcase = $this->Showcase->User->find('first', 
    array(
     'contain'=> array(
      'Galleryitem' => array(
       'Image' 
      ) 
     ) 
    ) 
); 

Je reçois des données ici sur les Image. Donc, il semble que la profondeur joue un rôle ici.

D'autres facteurs qui sont venus à l'esprit étaient la relation entre belongsToUser et Galleryitem.

Quelle est la cause de ma requête pour ne pas renvoyer des données à partir d'une profondeur de 3?

Mise à jour L'ensemble des relations Showcase dans mon projet beaucoup plus ramifié que je l'explique ci-dessus. Toutes les autres branches apparaissent proprement. Donc, je suppose que cela a à voir avec des relations spécifiques dans cette branche, le .

Étrange encore, car les autres branches contiennent ce même ensemble de relation Galleryitem hasOne Image.

Répondre

2

Je vais habituellement pour la syntaxe de point (que je ne vois pas dans le livre):

$this->Showcase->contain('User','User.GalleryItem','User.GalleryItem.Image'); 
$showcase = $this->Showcase->User->find('first'); 

bien que je me bats pour trouver un exemple de trois profondément dans un de mon code.

+0

Ce message (bien que déconseillé) par Felix Geisendörfer remonte aux premiers jours de containable et pourrait aider à expliquer: http://debuggable.com/posts/bringing-the-cold-war-to-cakephp-12- le -comparable-comportement: 480f4dd6-2b50-4d7b-ab05-418dcbdd56cb – Leo

+0

+1, ABC est la seule chose qui fonctionne pour moi aussi pour des relations plus profondes. – sibidiba

+0

Merci! Il semble que mon problème réside dans le code secondaire. Après réécriture/nettoyage ça a marché. Par ailleurs: J'ai trouvé qu'un tableau 'fields' dans une branche à propos de par exemple. 'Image' affecte les autres branches qui contiennent un champ' Image'. Le dernier tableau 'fields' dicte les autres. –