我需要执行以下查询(使用 Propel 1.4/Symfony 1.4)
update notification
set read=1
where to=6 AND
action=0
为此,我在 symfony 1.4 中编写了以下代码
$c=new Criteria()
$c->add(NotificationPeer::TO, $memberId, Criteria::EQUAL);
$c->add(NotificationPeer::ACTION, 0, Criteria::EQUAL);
$notification = NotificationPeer::doSelect($c);
foreach($notification as $notice)
{
$notice->setRead(1);
$notice->save();
}
它可以工作,但是如果有 100 条通知给任何用户,它将花费 100 条查询和不必要的服务器负载。我查看了推进的 doUpdate 方法,我想它可以为我工作,但无法弄清楚如何。
有什么办法(我知道有但我不知道)在单个查询中完成所有这些事情吗?