CakePHP:join表为空(HABTM)
我与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',
//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”到其中 例如,对于您的情况,您可能希望添加一个包含一些用户数据的数组
推荐阅读:嗨,戴夫,谢谢你的回答!这本书我读了又读,但我还是不明白。。。我只想创建一条新消息,并将其与一个已创建的用户链接,该用户以前通过下拉列表选择(通过表单)。我不需要向用户表添加新数据。我需要将一条新消息链接到一个(或多个)已创建的用户。