【问题标题】:CakePHP: creating / updating record (foreign key)CakePHP:创建/更新记录(外键)
【发布时间】:2012-05-31 09:48:23
【问题描述】:

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

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

- id
- date

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

- id
- report
- game_id (foreign key)

游戏hasOne举报并举报belongsTo游戏。

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

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

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

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

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

【问题讨论】:

    标签: forms cakephp duplicates record cakephp-2.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);
    

    【讨论】:

      猜你喜欢
      • 2016-06-27
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多