Satu Sultana
Satu Sultana

Reputation: 537

CakePHP 2.x : How to get last insert single field in controller?

I have a tansaction table and have a field called balance. Here I am trying to update this field with new data but insert in new transaction. So I need balance field in controller. So, I have tried below code.

$client_id = $this->request->data['Transaction']['user_id'];
$new = $this->Transaction->find('first', array(
    'conditions'=>array('Transaction.user_id'=> $client_id),
    'fields'=>array('Transaction.balance')
));

$this->request->data['Transaction']['balance'] =$this->request->data['Transaction']['debit_money']-$this->request->data['Transaction']['credit_money']+new;

But here I am not getting old balance data.

Upvotes: 0

Views: 68

Answers (1)

Inigo Flores
Inigo Flores

Reputation: 4469

$new is an associative array. You are adding an array to a number.

Try the following:

$client_id = $this->request->data['Transaction']['user_id'];
$new = $this->Transaction->find('first', array(
    'conditions'=>array('Transaction.user_id'=> $client_id),
    'fields'=>array('Transaction.balance')
));

$this->request->data['Transaction']['balance'] = 
    $this->request->data['Transaction']['debit_money']
    - $this->request->data['Transaction']['credit_money']
    + $new['Transaction']['balance'];

Alternatively, this should also work:

$client_id = $this->request->data['Transaction']['user_id'];

$this->request->data['Transaction']['balance'] = 
    $this->request->data['Transaction']['debit_money']
    - $this->request->data['Transaction']['credit_money']
    + $this->Transaction->field('balance',array('Transaction.user_id'=> $client_id),        
));

Upvotes: 1

Related Questions