2014-02-26 48 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