在symfony doctrine更新查询中计算

时间:2012-01-17 09:45:45

标签: php sql symfony1 doctrine

我们需要根据表中的现有数据更新记录,这是我手动创建的查询,只是为了解释此查询使用金额字段通过减去51%的值来更新奖金字段数据。

update users set final_amount = amount-(amount*51/100) where id = 1

这是我的symfony代码

$q = Doctrine_Query::create()           
   ->update('Users')              
   ->set('final_amount',"'". $amount."'") 
   ->where('id =1')->execute();

2 个答案:

答案 0 :(得分:3)

这很容易,甚至还有例子in the documentation

$q = Doctrine_Query::create()
    ->update('users')
    ->set('final_amount', 'amount-(amount*51/100)')
    ->where('id = ?', 1)->execute();

DQL解析器非常智能,可以检测设置部分中的列。

顺便说一下,请勿使用->where('id =1'),而是使用->where('id = ?', 1)

答案 1 :(得分:0)

我希望我做对了。它很简单:

$query = Doctrine_Query::create()
           ->update('Users')
           ->set('final_amount', $amount - $amount * 51 / 100)
           ->where('id = 1')
           ->execute();