2010-12-11 3 views
1

Ich bin neu zu Kuchen und ich habe ein Problem mit der Assoziation konfrontiert.Wie Setup hat und gehört zu vielen (HABTM) Zuordnung zwischen zwei Modellen?

Ich habe drei Tabellen: users, messages und messages_users und ich bin mit HABTM Beziehung für diesen in Nachrichtenmodell als:

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")') 

) 

); 

Mein Problem ist, wenn ein Benutzer anmelden, er in der Lage sein muß, um zu sehen, die Liste der Nachrichten, die er mit dem Namen des Absenders in der Tabelle bekommen hat.

Aber für mich diese Beziehung nur für diese messages_users Daten,

Mein Controller ist wie diese,

<?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; 

} 

} ?> 

So helfen Sie mir bitte jemand, wie man das Ergebnis zu holen.

+0

Die Frage könnte besser formuliert werden als: "Wie Setup hat und gehört zu vielen (HABTM) Assoziation zwischen zwei Modellen" –

Antwort

0

Vom CookBook:

Denken Sie daran, dass Verbände 'ein Weg' definiert sind. Wenn Sie Benutzer hasMany Rezept definieren, das keine Auswirkung auf das Rezeptmodell hat. Sie müssen Rezepte belongsTo Benutzer definieren, um Zugriff auf das User-Modell von Ihrem Rezepte Modell

Haben Sie Setup die Beziehung in Ihrem Benutzer-Modell, um Ihre Nachrichten Modell zu können?

Wenn Sie es so einrichten, wie Sie es gewohnt sind, können Sie auf Benutzer vom Nachrichtenmodell zugreifen, aber nicht auf Nachrichten vom Benutzermodell.

Referenz Die CookBook Modelle Abschnitt auf Has And Belongs To Many für weitere Details.

Verwandte Themen