Расчет в запросе на обновление доктрины Symfony - PullRequest
1 голос
/ 17 января 2012

У нас есть ситуация, в которой нам нужно обновить записи на основе существующих данных в таблице, это запрос, который я создал вручную, просто чтобы объяснить, что этот запрос обновляет данные призового поля, используя поле суммы, вычитая его значение в 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 ]

3 голосов
/ 18 января 2012

Это легко сделать, есть даже примеры в документации .

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

Синтаксический анализатор DQL отлично подходит для обнаружения столбцов в заданной части.

Кстати, не используйте ->where('id =1'), а ->where('id = ?', 1).

0 голосов
/ 17 января 2012

Надеюсь, я правильно понял.Это так же просто, как:

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