2014-02-26 31 views
0

我有以下HABTM关系:CakePHP的:连接表是空的(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_users(与iduser_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是空的。我究竟做错了什么?

在此先感谢!

回答

0

为了将数据保存在“连接”表中,您可能需要一些数据来确定项目实际上“连接”到的内容。

作为一个例子,对于你的情况,你可能想要添加一个包含用户数据的数组。

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

+0

戴夫您好,感谢您的回答!我已经阅读并重新阅读了这本书,但是我仍然无法理解HABTM关系......我只是想创建一条新消息并将其与创建的用户关联起来,该用户之前通过下拉列表选择(通过表单) 。我不需要向用户表添加新数据。我需要将一条新消息与一个(或多个)创建的用户链接起来。 – MorbidDesign