2012-05-31 116 views
0

我是CakePHP的新手,希望有人能帮助我解决这个问题。我无法自己解决这个问题。CakePHP:创建/更新记录(外键)

我有一个表 '游戏',有以下栏目:

- id 
- date 

而第二个表 '报告',有以下栏目:

- id 
- report 
- game_id (foreign key) 

游戏hasOne报告报告belongsTo游戏。

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

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

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

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

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

回答

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);