如何设置和属于两个模型之间的许多(HABTM)关联?

时间:2010-12-11 04:05:04

标签: models cakephp-1.3 has-and-belongs-to-many

我是新手,我正面临与协会有关的一个问题。

我有三个表:usersmessagesmessages_users我在消息模型中使用HABTM关系:

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

)

);

我的问题是,当任何用户登录时,他必须能够看到他在表格中找到的邮件列表。

但对我来说,这种关系只取得messages_users数据,

我的控制器是这样的,

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

}

} ?>

所以请任何人帮助我如何获得结果。

1 个答案:

答案 0 :(得分:0)

来自CookBook

  

请记住,定义了关联   '单程'。如果您定义User hasMany   食谱对此没有影响   食谱模型。你需要定义   食谱属于用户能够   从您的食谱中访问用户模型   模型

您是否已将用户模型中的关系设置为消息模型?

像你一样设置它你将能够从消息模型访问用户而不能从用户模型访问消息。

参考Has And Belongs To Many上的CookBook Models部分了解更多详情。