0

我有一个联系表格,询问用户的姓名、电子邮件地址和消息。

姓名和电子邮件地址存储在Person,消息存储在Message

MessagePerson当我这样做时属于这样:

$this->Person->Message->saveAll($this->request->data)

..名称和电子邮件地址在people表中插入,消息在messages表中插入,带有person_id.

到目前为止,一切都很好。

现在,如果用户(由他们的电子邮件地址标识)返回并提交第二条消息,我想要做的是提供一种Person更新和插入的方法。Message

我发现这样做的唯一方法是运行 findPerson以查看是否有包含表单中提交的电子邮件地址的记录。如果有,我用array_merge它添加到$this->request->data['Person']. 这行得通,但这感觉有点像一种骇人听闻的做事方式。

有没有更直接的方法来做到这一点?

4

2 回答 2

1

如果您使用 Person 模型的 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;
}
于 2012-06-22T11:36:07.497 回答
0

找到您的 Person 后,您只需设置 Message 的 person_id 并对其运行 save 即可,因此您不必再次保存该人。

于 2012-06-22T07:24:29.873 回答