我有以下表格:
echo $this->Form->input('Person.name');
echo $this->Form->input('Person.phone');
echo $this->Form->input('Person.email');
echo $this->Form->input('Message.0.plainmsg');
echo $this->Form->submit('Send Message');
echo $this->Form->end();
Person
有很多Message
我想设置控制器,以便第一次填写表格并插入Person
,Message
但第二次有人用相同的电子邮件地址填写表格时,Person
只是更新但新Message
的就像以前一样插入。
这是我的控制器到目前为止的样子:
if ($this->request->is('post')) {
// Check to see if submitted email address is already
// a record in Person model
$person = $this->Person->findByEmail($this->request->data['Person']['email']);
if ($person) {
// Set the ID (save query will be UPDATE)
$this->Person->id = $person['Person']['id'];
} else {
// Create a new record (save query will be INSERT)
$this->Person->create();
}
// Save the data (will run as UPDATE or INSERT
// depending on above
$this->Person->save($this->request->data);
}
这一切都按预期工作:如果Person.email
已经存在,则Person
更新而不是插入。这正是我想要的。
问题是我无法弄清楚如何解决Message
所有这些问题。
我尝试将保存更改为蛋糕手册本节$this->Person->saveAssociated($this->request->data)
最后一个示例中所示的内容,但结果是蛋糕尝试插入而不是更新它。Person
我在这里尝试做的重点和目的是允许用户发布无限数量的新消息,Message
并始终Person
使用他们当前的联系号码更新他们的记录(这将定期更改)。