我是CakePHP的新手,希望有人可以帮我解决这个问题。我无法独自解决这个问题。
我有一个表'游戏',包含以下列:
- id
- date
第二个表'报告',包含以下列:
- id
- report
- game_id (foreign key)
游戏hasOne
报告并报告belongsTo
游戏。
我正在尝试构建一个向现有游戏添加报告的表单。每当我添加新报告时,它都会创建一个重复记录。我已经读过,如果Cake不知道id,就会发生这种情况。当我调试时,id-field为空。
这是我的目标:如果还没有游戏报告,则会显示添加链接,如果某个特定游戏的报告存在,则会显示更新链接。或者分别有一个指向表单的链接,根据是否存在报表,添加或编辑报表。如何做到这一点?
我已经在beforeSave()
函数中读到了,您可以指定何时创建以及何时编辑记录。我不知道如何做到这一点。
目前我唯一的解决方案是验证表单并设置game_id isUnique
并告知用户已经有一个包含此game_id的报告。
非常感谢任何能帮助我的人!
答案 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);