我有一个联系表格,询问用户的姓名,电子邮件地址和信息。
姓名和电子邮件地址存储在Person
中,邮件存储在Message
Message
属于Person
所以当我这样做时:
$this->Person->Message->saveAll($this->request->data)
.. people
表中的名称和电子邮件地址已被INSERTED,并且messages
表格中的邮件已被person_id
封存。
到目前为止,非常好。
现在,我想要做的是为Person
提供一种更新方式,如果用户(由他们的电子邮件地址标识)返回并提交第二条消息,则Message
将被插入。Person
我发现这样做的唯一方法是在array_merge
上运行查找以查看是否有包含表单中提交的电子邮件地址的记录。如果有,我会使用$this->request->data['Person']
将其添加到{{1}}。这很有效,但这感觉就像是一种做事的hackish方式。
有没有更简单的方法呢?
答案 0 :(得分:1)
如果使用Person Model的beforeSave()方法。
# App/Model/Person.php
function beforeSave()
{
if(empty($this->data['Person']['id'])
{
$person = $this->findByEmail($this->data['Person']['email']);
if(!empty($person))
{
$this->data['Person']['id'] = $person['Person']['id'];
}
}
return true;
}
答案 1 :(得分:0)
找到你的人后,你可以设置你的消息的person_id,然后只需保存就可以了,所以你不必再保存这个人。