Php 使用浮点值更新查询

Php 使用浮点值更新查询,php,doctrine,dql,Php,Doctrine,Dql,我需要增加用户的余额,所以我会: Doctrine_Query::create()->from('User')->update('balance', 'balance + 0.15')->execute(); 我得到一个错误“未知组件别名0”。我想这是因为0.15 那么,我如何更新(使用DQL)余额,而不需要对用户的表进行额外的SELECT查询来获取他的余额,计算新余额,并执行类似于Doctrine_query::create()->from('User')->update(

我需要增加用户的余额,所以我会:

Doctrine_Query::create()->from('User')->update('balance', 'balance + 0.15')->execute();
我得到一个错误“未知组件别名0”。我想这是因为0.15
那么,我如何更新(使用DQL)余额,而不需要对用户的表进行额外的SELECT查询来获取他的余额,计算新余额,并执行类似于
Doctrine_query::create()->from('User')->update('balance','?',$new_balance)->execute()的查询

你的假设看起来是对的。条令认为
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

此解决方案适用于MySQL

Doctrine_Query::create()->update('Users')->set('balance', 'balance + "0.15"')->execute();

我需要增加用户的余额,而不是直接设置。当使用整数值时,一切正常,但float不正常。现在,我将使用查询::create()->update('Users')->set('balance','balance+'0.15')->其中('id',$id)->execute();这似乎是一个很好的解决方案。为什么要将数字(
0.15
)视为字符串(
“0.15”
)?