为什么$ this->协议 - >保存($ data);不写数据到DB?

时间:2014-07-29 18:43:16

标签: cakephp cakephp-2.5

这是我的功能添加到支付控制器。它写入付款表,从协议读取但不更新协议。为什么呢?

    public function add( $agreement_id = null ) {

    if ($this->request->is('post')) {
        $this->Payment->create();

        if ($this->Payment->save($this->request->data)) {                               
           $my_agreement = $this->Agreement->read(null, $agreement_id);
           $my_agreement['Agreement']['payment']=
                   $my_agreement['Agreement']['payment']+
                   $this->request->data['Payment']['payment_volume'];
           $my_agreement['Agreement']['charge']=
                   $my_agreement['Price']['total_price']-
                   $my_agreement['Agreement']['payment'];

          $data = array(  'id' => $agreement_id,
                'Agreement.payment' => $my_agreement['Agreement']['payment'],
                'Agreement.charge' => $my_agreement['Agreement']['charge']
           );

               $this->Agreement->save($data);
        return $this->redirect(array('action' => 'index'));
        } 
    }
    $agreements = $this->Payment->Agreement->find('list'); 
    $this->set('agreement_id', $agreement_id); 
    $this->set(compact('agreements'));
}

1 个答案:

答案 0 :(得分:0)

而不是

$data = array(  'id' => $agreement_id,
                'Agreement.payment' => $my_agreement['Agreement']['payment'],
                'Agreement.charge' => $my_agreement['Agreement']['charge']
           );

应该是

$data = array(  'id' => $agreement_id,
                'payment' => $my_agreement['Agreement']['payment'],
                'charge' => $my_agreement['Agreement']['charge']
           );

$data = array('Agreement' => array('id' => $agreement_id,
                'payment' => $my_agreement['Agreement']['payment'],
                'charge' => $my_agreement['Agreement']['charge']
           ));