5

我知道$this->Model->save()如果我传入 id 可以用来更新特定记录,但是如何更新该行上的单个字段?

我有一个usersbalance字段的表。我想balance根据已有的内容更新该字段。

例如,用户在余额字段中有 20 美元。我想加 1 美元使它变成 21 美元。我知道如何做到这一点的唯一方法是使用

$balance = $this->Model->find('first', array(
    'conditions' => array('User.id' => $userId),
    'fields' => array('User.balance')
));

$this->Model->save(array(
    'User' => array('id' => $userId, 'balance' => $balance['User']['balance'] + $credit)
));

我怎样才能把这一切都集中在一个save电话里?

4

3 回答 3

8

这应该这样做:

$this->User->updateAll(array('User.balance' =>'User.balance + 1'), array('User.id' => $id));
于 2012-07-29T03:07:38.913 回答
3
$this->Model->saveField('balance','balance+1');

应该做的伎俩!

于 2012-07-29T02:43:57.280 回答
1

试试这个:-

public function edit($id = null) {
        $this->layout = 'admin_layout';
        $this->Model->id = $id;
        if (!$this->Model->exists()) {
            throw new NotFoundException(__('Invalid model'));
        }
        if ($this->request->is('post') || $this->request->is('put')) {
            if ($this->Model->save($this->request->data)) {
                $this->Session->setFlash(__('The model has been saved'));
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('The model could not be saved. Please, try again.'));
            }
        } else {
            $this->request->data = $this->Model->read(null, $id);
        }
        $datd = $this->Model->find('list');
        $this->set('data', $datd);
    }
于 2012-07-29T09:27:42.450 回答