0

ユーザーに名前、メールアドレス、メッセージを尋ねるお問い合わせフォームがあります。

名前とメールアドレスはに保存されPerson、メッセージはに保存されますMessage

MessagePerson私がそうするとき、そうに属します:

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

..名前と電子メールアドレスはpeopleテーブルに挿入され、メッセージはテーブルに挿入されmessagesますperson_id

ここまでは順調ですね。

ここで、私がやりたいのは、ユーザー(電子メールアドレスで識別される)が戻ってきて2番目のメッセージを送信した場合にPerson更新および挿入される方法を提供することです。Message

これを行うために私が見つけた唯一の方法は、find onを実行Personして、フォームに送信された電子メールアドレスを含むレコードがあるかどうかを確認することです。ある場合は、に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_idを設定し、保存を実行するだけで、その個人を再度保存する必要はありません。

于 2012-06-22T07:24:29.873 に答える