私は 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
いないため、列は更新されていません。
レコードが更新されていない場合でも、propel に強制的にクエリを実行させる方法はありますか?