0

私は CakePHP が初めてで、誰かがこれで私を助けてくれることを願っています。自力では解決できません。

次の列を持つ「ゲーム」テーブルがあります。

- id
- date

そして、次の列を持つ 2 番目のテーブル「レポート」:

- id
- report
- game_id (foreign key)

ゲームhasOneレポートとレポートbelongsToゲーム。

既存のゲームにレポートを追加するフォームを作成しようとしています。新しいレポートを追加するたびに、重複したレコードが作成されます。Cake が ID を知らない場合、これが発生することを読みました。デバッグすると、id フィールドが空になります。

これが私の目的です。ゲームのレポートがまだない場合は追加リンクが表示され、特定のゲームのレポートが存在する場合は更新リンクが表示されます。または、レポートがあるかどうかに応じて、レポートを追加または編集するフォームへのリンクがそれぞれ 1 つあります。これはどのように行うことができますか?

beforeSave()-function で、レコードをいつ作成し、いつ編集するかを指定できることを読みました。どうすればこれができるのかわかりません。

現在、私の唯一の解決策は、フォームを検証して game_id を設定isUniqueし、この game_id を持つレポートが既に存在することをユーザーに通知することです。

これを手伝ってくれた人に感謝します!

4

1 に答える 1

1

事前に確認することができます。

if ($this->Report->hasAny(array('game_id' => $this->data['Report']['game_id']))) {
  // update
  $existing = $this->Report->find('first', array(
    'conditions' => array(
      'game_id' => $this->data['Report']['game_id']
    )
  ));
  $this->Report->id = $existing['Report']['id'];
} else {
  $this->Report->create();
}
// save or update
$this->Report->save($this->data);
于 2012-05-31T14:34:59.913 に答える