CakePHP:创建/更新记录(外键)

时间:2012-05-31 09:48:23

标签: forms cakephp duplicates record cakephp-2.1

我是CakePHP的新手,希望有人可以帮我解决这个问题。我无法独自解决这个问题。

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

- id
- date

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

- id
- report
- game_id (foreign key)

游戏hasOne报告并报告belongsTo游戏。

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

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

我已经在beforeSave()函数中读到了,您可以指定何时创建以及何时编辑记录。我不知道如何做到这一点。

目前我唯一的解决方案是验证表单并设置game_id isUnique并告知用户已经有一个包含此game_id的报告。

非常感谢任何能帮助我的人!

1 个答案:

答案 0 :(得分: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);