Обновление Doctrine_Query со значением с плавающей запятой - PullRequest
1 голос
/ 19 апреля 2010

Мне нужно увеличить баланс пользователя, поэтому я делаю:

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 ]

2 голосов
/ 19 апреля 2010

Это решение хорошо работает для MySQL !!!

Doctrine_Query::create()->update('Users')->set('balance', 'balance + "0.15"')->execute();
1 голос
/ 19 апреля 2010

Ваше предположение выглядит правильно. Доктрина считает, что 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
...