这可能不是saveAll的问题,情况是这样的。我有表messages和表sent_messages,它保存消息ID和用户ID。创建了模型,其中Messaage有Many SentMessage,而SentMessage属于Message。我只需要在 messages 表中保存一条消息,并将用户ID和消息ID保存在 sent_messages 表中。当我试图将其保存在MessageController中时,问题开始出现。代码如下:
function custom() {
if (!empty($this->data)) {
$this->loadModel('User');
$userIDs = $this->User->listActiveUsers();
$this->data['Message']['message_type_id'] = 2;
if ($this->Message->save($this->data)) {
array_pop($this->data);
foreach ($userIDs as $key => $value ) {
$this->data['SentMessage'][$key]['user_id'] = $value;
$this->data['SentMessage'][$key]['message_id'] = $this->Message->getLastInsertID();
}
//die($this->Message->SentMessage->saveAll($this->data));
if ($this->Message->SentMessage->saveAll($this->data)) {
$this->Session->setFlash('Data saved', 'success');
}
else {
$this->Session->setFlash('Data not saved', 'error');
}
}
}
}
任何帮助都将不胜感激。
2条答案
按热度按时间2ic8powd1#
我认为您问题来自于使用“$key”作为$userIDs数组的键,saveAll将hasMany关系的未索引数组作为参数。
此外,saveAll非常适合同时保存两个相关的模型。下面是一些应该可以工作的东西:
检查文档!http://book.cakephp.org/view/1031/Saving-Your-Data
关于使用loadModel,我假设您的SentMessage模型与User相关,因此您可以用途:$this-〉Message-〉SentMessage-〉User。但是我们不知道哪一个更有效。
k97glaaz2#
在cakephp中保存所有数据的最简单方法
**注意:**表中字段的名称和数组中字段的名称应该相同。