在保存到 CakePHP 之前将 ID 插入 $this->request->data 数组

问题描述 投票:0回答:2

我有一个联系表,要求用户提供姓名、电子邮件地址和消息。

姓名和电子邮件地址存储在

Person
中,消息存储在
Message

Message
属于
Person
所以当我这样做时:

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

..姓名和电子邮件地址已插入到

people
表中,消息已插入到
messages
表中,并带有
person_id

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

现在,我想要做的是,如果用户(通过电子邮件地址识别)返回并提交第二条消息,则提供一种方法来更新

Person
和插入
Message

我发现执行此操作的唯一方法是在

Person
上运行 find 以查看是否有包含表单中提交的电子邮件地址的记录。如果有,我使用
array_merge
将其添加到
$this->request->data['Person']
。这可行,但这感觉有点像黑客的做事方式。

有更直接的方法吗?

php cakephp
2个回答
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;
}

0
投票

找到您的人员后,您只需设置消息的 person_id 并运行保存即可,这样您就不必再次保存该人员。

© www.soinside.com 2019 - 2024. All rights reserved.