我不知道要搜索我的问题的关键字。如何保存已存在值的字段的更新数据,我想用附加值更新它。
这是一个例子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?
答案 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();