2010-12-11 56 views
1

Je suis nouveau dans le gâteau et je fais face à un problème lié à l'association.Comment configurer a et appartient à plusieurs (HABTM) association entre deux modèles?

J'ai trois tables: users, messages et messages_users et je suis en utilisant la relation HABTM pour cela dans le modèle de message comme:

var $hasAndBelongsToMany = array(

'Users' => array (

'className' => 'User', 

'join_table' => 'messages_users', 

'foreignKey' => 'message_id', 

'associationForeignKey' => 'reciever_id', 

'conditions'=> array('MessagesUser.reciever_id' => '$this->Session->read("Id")') 

) 

); 

Mon problème est quand un utilisateur se connectera, il doit être en mesure de voir la liste des messages qu'il a reçus avec le nom des expéditeurs dans la table.

Mais pour moi cette relation est que les données de l'exactitude de messages_users,

Mon contrôleur est comme ça,

<?php 

class MessagesController extends AppController { 

var $name = 'Messages'; 

//var $scaffold; 

function home($id = null) 

{ 

//$this->Message->id=$id; 

//$messages_users = $this->Message->MessagesUser->find('all',array('conditions'=>array('MessagesUser.reciever_id'=>$this->Session->read("Id")))); 

$messages_users = $this->Message->MessagesUser->find('all',array('fields'=>array('id','name'))); 

// $this->set(compact('tags')); 

print_r($messages_users); 

$this->set('messages_users',$messages_users); 

$i=0; 

foreach ($messages_users as $messages_user): 

$new = $messages_users[$i]['MessagesUser']['sender_id']; 

$i++; 

print_r($new); 

$messages = $this->Message->Users->find('all',array('conditions'=>array('Users.id'=>$new))); 

// print_r($messages); 

$this->set('messages',$messages); 

endforeach; 

} 

} ?> 

Alors s'il vous plaît quelqu'un me aider comment obtenir le résultat pour cela.

+0

La question pourrait être mieux formulée comme: "Comment configurer a et appartient à plusieurs (HABTM) association entre deux modèles" –

Répondre

0

De l'CookBook:

Rappelez-vous que les associations sont définies 'une façon. Si vous définissez User hasMany Recette qui n'a aucun effet sur le modèle de recette . Vous devez définir recette belongsTo utilisateur pour pouvoir accéder au modèle de l'utilisateur de votre recette modèle

Avez-vous configurer la relation dans votre modèle d'utilisateurs à votre modèle de messages?

En l'installant comme vous avez, vous pourrez accéder aux utilisateurs à partir du modèle de messages mais pas des messages du modèle utilisateur.

Référence La section Modèles CookBook sur Has And Belongs To Many pour plus de détails.