0

我在 Symfony 1.4 和 Propel 1.4 中有一个现有项目

对于新要求,我尝试了以下代码:

static public function extendMomentoLock($momentoId,$memberId)
{
    $wherec = new Criteria();
    $updatec = new Criteria();

    $updatec->add(MomentoPeer::LOCKED, 1);
    $updatec->addAnd(MomentoPeer::LOCKEDBY, $memberId);
    $wherec->add(MomentoPeer::ID, $momentoId, Criteria::EQUAL);

    $con = Propel::getConnection(MemberPeer::DATABASE_NAME, Propel::CONNECTION_WRITE);
    BasePeer::doUpdate($wherec, $updatec, $con);

    return "extended";
}

正如预期的那样,它生成了正确的查询,取自日志

UPDATE momento SET `LOCKED`=1, `LOCKEDBY`=6 WHERE momento.ID='198'

到这里为止没有问题。

问题开始了,因为我需要每 3 分钟运行一次此查询。规则是,如果记录提前 5 分钟更新,则每 5 分钟自动解锁一次。要保持锁定状态,updated_at列必须少于 5 分钟,以便浏览器发送请求以保持记录锁定。

我期待查询更新updated_at列。但是,由于查询中没有任何更新,updated_at因此列没有更新。

有没有办法强制执行查询,即使没有更新记录。

4

1 回答 1

1

我猜您正在使用 Timestampable 行为,因此只有在行上执行更改时它才会更新日期字段。

我认为您可以使用基本 SQL 语句强制更新:

$updatec->addAnd(MomentoPeer::UPDATED_AT, 'NOW()');
于 2012-10-01T14:33:24.613 回答