Model 在Symfony中保存数据库时,如何保留更新日期字段?

Model 在Symfony中保存数据库时,如何保留更新日期字段?,model,symfony1,save,propel,Model,Symfony1,Save,Propel,这必须很简单。。。 我正试图保留已存储在数据库中更新位置的字段中的当前日期。 我正在更新同一行中的单个字段值,然后保存,但我不希望它更新更新的字段值我想保留现有的更新值。 我只想在一种,也许两种情况下这样做,所以我不需要为程序中的每一个其他操作覆盖模型 我试过这个: $originalDate = $this->getUpdatedAt(); $this->setUpdatedAt($originalDate); $this->save(); 这似乎应该有效,但似乎仍在更新字

这必须很简单。。。 我正试图保留已存储在数据库中更新位置的字段中的当前日期。
我正在更新同一行中的单个字段值,然后保存,但我不希望它更新更新的字段值我想保留现有的更新值。

我只想在一种,也许两种情况下这样做,所以我不需要为程序中的每一个其他操作覆盖模型

我试过这个:

$originalDate = $this->getUpdatedAt();
$this->setUpdatedAt($originalDate);
$this->save();

这似乎应该有效,但似乎仍在更新字段。

在symfony中,通常,当一个表有一个名为created_at的列时,它用于存储创建记录的日期的时间戳。这同样适用于更新的_at列,这些列将在每次更新记录本身时更新为当前时间的值

好消息是symfony将识别这些列的名称并为您处理它们的更新。您不需要手动设置创建的_at和更新的_at列;它们将自动更新


如果要保留其他已创建和已更新的信息,则应创建另一个字段。

在symfony中,通常,当一个表有一个名为created_at的列时,该列用于存储创建记录日期的时间戳。这同样适用于更新的_at列,这些列将在每次更新记录本身时更新为当前时间的值

好消息是symfony将识别这些列的名称并为您处理它们的更新。您不需要手动设置创建的_at和更新的_at列;它们将自动更新


如果您想保留其他已创建和已更新的信息,您应该创建另一个字段。

好吧,这一细微的更改似乎有效:

$originalDate = $this->getUpdatedAt();
$this->save();

$this->setUpdatedAt($originalDate);
$this->save();

但必须有一种更优雅的方式,这样你就不必进行两次单独的保存。

看来这一细微的改变是有效的:

$originalDate = $this->getUpdatedAt();
$this->save();

$this->setUpdatedAt($originalDate);
$this->save();

但是必须有一种更优雅的方式,这样您就不必进行两次单独的保存。

位于的
updated\u列仅在未更改的情况下设置当前时间。这是通过
isColumnModified
方法检查的。如果先将对象更改为某个值,然后再将其更改回原始值,则可以欺骗对象,使其相信该值已被修改

$updatedAt = $book->getUpdatedAt();
$book->setUpdatedAt(null);
$book->setUpdatedAt($updatedAt);

$book->setInStock(4);
$book->save();

在Symfony 1.2中,此行为被添加到中,并且不能被禁用(它在
或上检查名为
updated\u的列)。在Symfony 1.3和1.4中,使用了较新的Propel 1.4行为,因此我认为必须显式添加它们才能获得效果。同样的技巧也可以避免更新。

位于
updated\u列只有在未更改的情况下才会设置当前时间。这是通过
isColumnModified
方法检查的。如果先将对象更改为某个值,然后再将其更改回原始值,则可以欺骗对象,使其相信该值已被修改

$updatedAt = $book->getUpdatedAt();
$book->setUpdatedAt(null);
$book->setUpdatedAt($updatedAt);

$book->setInStock(4);
$book->save();

在Symfony 1.2中,此行为被添加到中,并且不能被禁用(它在
或上检查名为
updated\u的列)。在Symfony 1.3和1.4中,使用了较新的Propel 1.4行为,因此我认为必须显式添加它们才能获得效果。同样的技巧也可以避免更新。

有没有办法在需要时覆盖此行为?我不想仅仅为了一个行为而更改数据库结构和整个模型。@Failpunk:默认情况下,存储在项目“lib”目录中的类会从自动加载中受益。您可以在官方文档中找到有关这些文件夹的更多信息。但有没有办法在需要时覆盖此行为?我不想仅仅为了一个行为而更改数据库结构和整个模型。@Failpunk:默认情况下,存储在项目“lib”目录中的类会从自动加载中受益。您可以在官方文档中找到有关这些文件夹的更多信息。是“推进”还是“条令”?请明确说明这一点。我想问的是如何在推进或规范或条令中做到这一点?请明确说明这一点。我是在问如何在ORM中做到这一点