CakePHP:join表为空(HABTM)

CakePHP:join表为空(HABTM),cakephp,has-and-belongs-to-many,Cakephp,Has And Belongs To Many,我与HABTM的关系如下: //Message.php class Message extends AppModel { public $hasAndBelongsToMany = array( 'User' => array( 'className' => 'User', 'joinTable' => 'messages_users', 'foreignKey' => 'message_id',

我与HABTM的关系如下:

 //Message.php
 class Message extends AppModel {
public $hasAndBelongsToMany = array(
    'User' => array(
        'className' => 'User',
        'joinTable' => 'messages_users',
        'foreignKey' => 'message_id',
        'associationForeignKey' => 'user_id',
        'unique' => true));
 }

 //User.php
 [...]
    public $hasAndBelongsToMany = array(
    'Message' => array(
        'className' => 'Message',
        'joinTable' => 'messages_users',
        'foreignKey' => 'user_id',
        'associationForeignKey' => 'message_id',
        'unique' => true));
 //[...]
 }
在我的数据库中,我有以下表格:
users
messages
messages\u users
(带有
id
user\u id
message\u id
字段)

我正在使用以下工具保存数据:

//MessagesController.php
public function new_message() {
    $users = $this->Message->User->find('list', array(
        'fields' => array(
            'username')));
    $this->set(compact('users'));

    if ($this->request->is('post')) {
        //debug($this->request->data);
        if ($this->Message->saveAll($this->request->data, array(
            'deep' => true))) {
            $this->Session->setFlash('Message sent.');
            $this->redirect(array('action' => 'index'));
        }
    }
}
调试信息显示:

 array(
      'Message' => array(
           'users' => '1',
           'subject' => 'Subject',
           'text' => 'Text'
      )
 )
数据在表
messages
中保存时没有出现问题,但联接表
messages\u users
为空。我做错了什么


提前谢谢

为了将数据保存在“join”表中,您可能需要一些数据,以便将项目实际“join”到其中

例如,对于您的情况,您可能希望添加一个包含一些用户数据的数组


推荐阅读:

嗨,戴夫,谢谢你的回答!这本书我读了又读,但我还是不明白。。。我只想创建一条新消息,并将其与一个已创建的用户链接,该用户以前通过下拉列表选择(通过表单)。我不需要向用户表添加新数据。我需要将一条新消息链接到一个(或多个)已创建的用户。