1

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

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

4

2 回答 2

2

该解决方案适用于 MySQL !!!

Doctrine_Query::create()->update('Users')->set('balance', 'balance + "0.15"')->execute();
于 2010-04-19T09:16:54.173 回答
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
于 2010-04-19T09:07:29.640 回答