Facebook にシェア
[`evernote` not found]
LINEで送る

CakePHPを色々勉強中ですが、データを作成したときに簡単に保存できて便利なのですが、
複数のテーブルを利用しているときにつまずきました。

例えばpostとmailというテーブルがあり、二つのテーブルはお互いのid同士でつながっています。(お互い必ず一つづつのIDで組み合わさっています)
そこで
postのid = mailのpost_id
mailのid = postのmail_id
という形でデータを登録したいのですが、新規に作成した場合postを保存する段階ではmailのidはまだ作成されておらず、mailのidを作成する段階ではpostのmail_idはすでに保存された状態になってしまっています。
すごく困って現在こんな形になっています。

if ($this->Post->save($this->data)) {
   $mail_data['Mail']['post_id']=$this->Post->getLastInsertID();
   $this->Mail->save($mail_data);
   $this->data['Post']['mail_id'] = $this->Mail->getLastInsertID();
   $this->Post->save($this->data);
}

getLastInsertIDという、直前に保存したIDを収得できる便利な関数があったので割と簡単に実装できました。
でもこれだと一度postを保存した後に、mailを保存して、その後postを保存しなおす必要があるんですよねえ。
なんか一回無駄に保存していいる気がしてどうにかしたいのですが、何かいい方法はないものでしょうか。