使用浮点值更新Doctrine_Query

时间:2010-04-19 09:02:15

标签: php doctrine dql

我需要增加用户的余额,所以我这样做:

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();等查询

2 个答案:

答案 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