CakePHP:连接表为空(HABTM)

时间:2014-02-26 19:11:58

标签: 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',
        '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));
 //[...]
 }

在我的数据库中,我有以下表:usersmessagesmessages_usersiduser_idmessage_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_users为空。我做错了什么?

提前致谢!

1 个答案:

答案 0 :(得分:0)

为了将数据保存在“加入”表格中,您可能需要一些数据来表示您希望您的项目实际“加入”。

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

推荐阅读:http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#hasandbelongstomany-habtm