cakephp从旧数据值+新值保存更新数据

时间:2014-02-18 08:36:25

标签: php mysql sql cakephp

我不知道要搜索我的问题的关键字。如何保存已存在值的字段的更新数据,我想用附加值更新它。

这是一个例子cakephp:

$userData = array(
      'id' => $userId,
      'credit' => $newCredit // This will update only new credit
);
$this->User->save($userData);

如果我使用普通查询MySQL,它将是这样的:

mysql_query("UPDATE `users` SET `credit` = `credit` + '$newCredit' WHERE `id` = '$userId'");

您只能使用credit的现有数据来查看正常的SQL查询一次。我知道我可以使用SELECT这些数据并在php中执行操作,然后执行UPDATE数据,但它将是2次(SELECT,然后是UPDATE)。

那么cakephp可以立刻做到吗?以及如何:D?

3 个答案:

答案 0 :(得分:2)

updateAll将有效

$this->User->updateAll(
       array('credit' => "credit + $newCredit"),
       array('id' => $userId)
    );

答案 1 :(得分:1)

试试这个......

   $user =  $this->User->read(null, $primary_key_id);
   $new_credit = $user['User']['credit'] + $add_new_value_of_credit;
   $this->User->id = $primary_key_id;
   $this->User->saveField('credit', $new_credit);

答案 2 :(得分:0)

试试这个:

$userData = array(
      'id' => $userId,
      'credit' => 'credit +'.$newCredit // old credit value + new credit value
);
$this->User->save($userData);

或者这个:

$newCredit = 566;
$this->User->read(null, $userId);
$this->User->set('credit',$this->User->field('credit') + $newCredit);
$this->User->save();