2009-09-30 7 views
0

Salutations,containable on hasMany relation

J'essaye de démonter la requête renvoyée par find call en utilisant containable dans CakePHP. Par exemple, j'ai 2 modèles, User et Post. L'utilisateur a plusieurs messages.

Maintenant, quand je me sers maîtrisable de find appeler comme ceci:

$User->id = 1; 
$User->find('first', array(
    'fields' => array('id'), 
    'contain' => array('Post') 
)) 

Il ne reviendra pas le message associé, au lieu sera juste retourner l'identifiant de l'utilisateur.

Cela fonctionne cependant si j'essaie de récupérer les données dans l'autre sens. i.e. cela fonctionne:

$Post->find('first', array(
     'fields' => array('id', 'user_id'), 
     'conditions' => array('Post.user_id' => 1), 
     'contain' => array('User') 
    )) 

cela ne:

$Post->find('first', array(
     'fields' => array('id'), 
     'conditions' => array('Post.user_id' => 1), 
     'contain' => array('User') 
    )) 

A partir des valeurs de retour, je suppose alors que pour la maîtrisable aux travaux, le foreignKey doit être dans les champs. Comment puis-je filtrer les champs Utilisateur lors du premier appel, car l'association de l'utilisateur est stockée dans Post.user_id?

Toute aide est grandement appréciée! Merci.

-aw

+0

Est-ce que l'utilisateur Message belongTo? Peut-être que vous avez besoin de définir les relations dans les deux sens pour que tout fonctionne. –

+0

@deceze J'ai essayé le réglage récursif à 9999 (je sais que 2 est suffisant, mais humour moi). Mais ça ne me donne pas le post associé, ça marche si je ne mets pas la spécification des champs là-bas. i. e find ('all', array ('contain' => 'Post')). mais j'ai besoin de filtrer les champs de l'utilisateur. –

+0

Pouvez-vous poster le code démontrant comment vous avez défini le tableau $ hasMany de votre modèle utilisateur? –

Répondre

1

Comme larryb82 dit que vous aurez besoin de définir la relation dans les deux sens afin de récupérer les données Messages du modèle utilisateur

Un utilisateur a de nombreux postes. Un poste appartient à un utilisateur

CakePHP Doc example

Questions connexes