2012-07-29 23 views
5

Sé que puedo usar $this->Model->save() para actualizar un registro en particular si paso la identificación, pero ¿cómo puedo actualizar un solo campo en esa fila?consulta de ACTUALIZACIÓN con CakePHP

Tengo una tabla users con un campo balance. Quiero actualizar el campo balance según lo que ya existe.

Por ejemplo, un usuario tiene $ 20 en el campo de saldo. Quiero agregar $ 1 para que sea $ 21. La única manera que sé cómo hacer esto es utilizar

$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) 
)); 

¿Cómo puedo conseguir que todos en un save llamada?

Respuesta

1

probar esto: -

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); 
    } 
3
$this->Model->saveField('balance','balance+1'); 

¡Debería hacer el truco!

+0

Me golpearon :) Aquí enlace API http://api.cakephp.org/class/model#method-ModelsaveField – tigrang

+0

¡Ni siquiera soy un chico de CakePHP (más un chico CodeIgniter) y lo descubrí! ¡Lo siento! – David

+4

Solo una nota extra: asegúrese de que '$ this-> Model-> id' esté configurado antes de la llamada – tigrang

8

Esto debería hacer:

$this->User->updateAll(array('User.balance' =>'User.balance + 1'), array('User.id' => $id)); 
Cuestiones relacionadas