我在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
列未更新。
有没有办法强制推进执行查询,即使没有更新记录。
答案 0 :(得分:1)
我猜您正在使用Timestampable行为,因此只有在对行执行更改时才会更新日期字段。
我认为您可以使用基本的SQL语句强制更新:
$updatec->addAnd(MomentoPeer::UPDATED_AT, 'NOW()');