【问题标题】:cakePHP - modified field not updatingcakePHP - 修改后的字段未更新
【发布时间】:2011-08-01 01:55:53
【问题描述】:

关于如何调试未更新的修改字段的任何想法?创建的字段工作正常。

我不确定您需要查看哪些代码,所以请告诉我!

谢谢

【问题讨论】:

    标签: cakephp


    【解决方案1】:

    我今天遇到了同样的问题,发现modified字段只有在进行了任何更改后才更新,否则该字段将不会被触及。

    【讨论】:

      【解决方案2】:

      就像 Anh Pham 所说,modifiedcreated 字段需要为DATETIME,并且它们还需要默认为NULL,如explained in the CakePHP book about the subject

      【讨论】:

      • 是的,它们都是 DATETIME,默认为 NULL。 Created 确实有效,但是在编辑函数中调用 $this->Model->save() 时,它不会更新修改后的字段。
      • 您可能会在表单中再次提供这些字段。这些不允许出现在表单中或保存时正确更新!
      【解决方案3】:

      您很可能正在覆盖该字段,请在保存之前从对象中取消设置该字段:

      unset($user['User']['modified']);
      

      现在你可以保存它了:

      $this->User->save($user);
      

      【讨论】:

      • 当您保存以前从数据库中找到的数据时,这不是问题,但当您从其他来源(会话、请求...)填充时,这确实是一个问题。
      【解决方案4】:

      你应该尝试检查你是否没有使用

       $this->ModelName->read(NULL, $id); 
      

      在保存数据之前,如果您认为自己没有保存数据,请仔细检查

      【讨论】:

        【解决方案5】:

        该字段应命名为“已修改”,类型为“日期时间”。 Cake 应该会自动为您更新该字段。如果您想检查,只需查询它,或者查看数据库。

        【讨论】:

          【解决方案6】:

          如果您使用手动更新查询,也可能会出现此问题。该字段仅在您使用 Cake 自己的函数时更新。

          【讨论】:

          • 我正在使用 Model->save() 函数。
          【解决方案7】:

          在 AppModel.php 中,只需编写以下代码。

          public function beforeSave($options = array())  {
              parent::beforeSave();
              if (isset($this->data[$this->alias]['modified'])) {
                  unset($this->data[$this->alias]['modified']);
              }
              if (isset($this->data[$this->alias]['created'])) {
                  unset($this->data[$this->alias]['created']);
              }
          
          }
          

          这适用于所有型号。但我们也可以为个别模型做到这一点。

          由于我们使用parent::beforeSave(); 作为第一行,因此这可以在每个单独的模型中覆盖。 感谢继承。

          【讨论】:

          • 这会将修改和创建的字段在数据库中保留为空,至少在我的 Cake 版本中是这样。
          • 我在 cake 2.X 中试过这个。你用的是哪个蛋糕版本?
          • 我使用的是 2.3.1 版本。
          • 由于您没有将列的类型设置为 TIMESTAMP,因此它在 DB 中保留为空。如果您将这种数据类型用于列,那么这些将自动更新。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-11-17
          • 2021-04-14
          • 1970-01-01
          • 2013-01-22
          • 1970-01-01
          • 1970-01-01
          • 2013-08-22
          相关资源
          最近更新 更多