0

我是 CakePHP 的新手,希望有人能帮我解决这个问题。我一个人解决不了。

我有一个表“游戏”,包含以下列:

- id
- date

第二个表“报告”,包含以下列:

- id
- report
- game_id (foreign key)

游戏hasOne报告和报告belongsTo游戏。

我正在尝试构建一个向现有游戏添加报告的表单。每当我添加新报告时,它都会创建重复记录。我已经读过,如果 Cake 不知道 id,就会发生这种情况。当我调试时,id-field 是空的。

这是我的目标:如果还没有游戏的报告,则会出现一个添加链接,如果存在特定游戏的报告,则会出现更新链接。或者,根据是否有/没有,分别有一个指向添加或编辑报告的表单的链接。如何做到这一点?

我已经在beforeSave()-function 中阅读过,您可以指定何时创建和何时编辑记录。我不知道如何做到这一点。

目前我唯一的解决方案是验证表单并设置 game_idisUnique并通知用户已经有带有此 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 回答