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));
//[...]
}
在我的数据库我有这些表:users
,messages
和messages_users
(与id
,user_id
和message_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
是空的。我究竟做错了什么?
在此先感谢!
戴夫您好,感谢您的回答!我已经阅读并重新阅读了这本书,但是我仍然无法理解HABTM关系......我只是想创建一条新消息并将其与创建的用户关联起来,该用户之前通过下拉列表选择(通过表单) 。我不需要向用户表添加新数据。我需要将一条新消息与一个(或多个)创建的用户链接起来。 – MorbidDesign