我需要增加用户的余额,所以我这样做:
Doctrine_Query::create()->from('User')->update('balance', 'balance + 0.15')->execute();
我收到错误“Unknown component alias 0”。我认为这是因为 0 .15
那么如何更新(使用DQL)余额而无需对用户表进行额外的SELECT查询来获取余额,计算新余额并执行Doctrine_Query::create()->from('User')->update('balance', '?', $new_balance)->execute();
等查询
答案 0 :(得分:2)
此解决方案适用于MySQL !!!
Doctrine_Query::create()->update('Users')->set('balance', 'balance + "0.15"')->execute();
答案 1 :(得分:1)
你的假设看起来是正确的。 Doctrine认为0
是一个表别名。您是否尝试过使用set()
?
来自文档:
$q = Doctrine_Query::create()
->update('Account')
->set('amount', 'amount + 200')
->where('id > 200');
// If you just want to set the amount to a value
$q->set('amount', '?', 500);
echo $q->getSqlQuery();
// UPDATE account
// SET amount = amount + 200
// WHERE id > 200