使用 Propel 在 NOW() 处设置一个值

Set a value at NOW() with Propel

我想在 Propel 中重写此类查询:

UPDATE my_table
SET my_datetime_field = NOW()
WHERE my_id = 99;

有办法吗?

是的,您有几个选择:

选项 1:

假设您在 schema.xml 中将列定义为 TIMESTAMP,您可以这样做:

$row->setMyDateTimeField('now');

Read more about Propel's Temporal Clumns...

选项 2:

您可以在 class 中设置一个挂钩,每次在 table 中更新行时都会调用该挂钩:

<?php
class MyTable extends BaseMyTable
{
    public function preUpdate(PropelPDO $con=null)
    {
       $this->setMyDateTimeField('now');
       return true;
    }
....

Read more about Propel's Behaviours

结论

如果您有不止一个更新 table 的逻辑,则选项 2 更有利,both/all 更新将受益于此更新