【问题标题】:redbeanphp : How to use mysql ON UPDATE timestampredbeanphp:如何使用 mysql ON UPDATE 时间戳
【发布时间】:2016-03-25 15:46:04
【问题描述】:

我需要 mysql 在每次更新时自动更新一个字段。我将该字段创建为:

   `lastModified` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,

但问题是当我使用 R::store 更新记录时,lastModified 不会自动更新,而是设置为最后设置的值。请注意,我的代码没有设置该字段。基本上做一个 findOne 和存储来设置任何其他字段应该更新时间戳,但看起来 redbeans 正在读取整行(所以 lastUpdated 被填写为旧时间)并假设当我存储时,它认为我将它设置为旧时间值.

【问题讨论】:

  • 您能否发布一些演示错误的简单代码。我使用redbeanPHP,所以很容易检查。

标签: php mysql last-modified redbean


【解决方案1】:

lastModified 属性是纯 MYSQL。它不依赖于实现。

RedbeanPHP 也更新了 mysql 数据库,你禁用了吗?

R::freeze( TRUE );

一旦你把它冻结,你可以自己修改数据库和表,redbean不会更新它。这也应该注意lastModified 属性。

【讨论】:

  • 但它仍然会读取旧值并将其写回。正确的 ?这会让 mysql 认为我正在尝试设置新值并使用它,而不是使用当前时间戳。我现在有一个解决方法,在 redbeans 中,我排除某些字段的更新
【解决方案2】:

试试这个

$bean->lastModified = date('Y-m-d G:i:s');
R::store($bean);

【讨论】:

  • 我建议详细说明这个答案。似乎这并没有回答“为什么时间戳不自动更新”的 OP 问题。
  • 对不起,我的简短回答,似乎 redbean 只更新 bean 中更改的字段,所以如果它设置为lastModifiedtimestamp NOT NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,在数据库中,要么设置bean 属性为 null 或当前时间以进行数据更改
猜你喜欢
  • 2023-04-06
  • 1970-01-01
  • 2010-12-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-08
  • 2017-02-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多