2010-04-19 87 views
1

Doctrine_Query更新我需要增加用戶的平衡,所以我做的:與浮點值

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();

回答

2

該解決方案非常適用於MySQL的!

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

爲什麼你把數字('0.15')當作一個字符串('「0.15」')? – Crozin 2010-04-19 12:33:02

1

你的假設看起來正確。學說認爲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 
+0

我需要INCREMENT用戶的餘額,而不是直接設置。當使用整數值時,它都可以,但float不是。現在我測試Doctrine_Query :: create() - > update('Users') - > set('balance','balance +「0.15」') - > whereIn('id',$ ids) - > execute();這似乎是很好的解決方案。 – yspro 2010-04-19 09:09:45