2012-02-15 6 views
0

こんにちは私の問題は、店と支払い方法の新しい関係を保存しようとしています 関係はhabtm ...店と支払いが既に存在します。私はより多くの支払い方法を広告したいです。 いつでも私は保存すると、shop_paymentテーブルの古い支払いrealtionは更新され、2番目のものは保存されません.... 私は多くの私は偽にユニークに設定したが、何も変更されません。 誰かがアイデアを得ましたか?保存の代わりにCakephpのhabtmの関係を更新する

モデル

class Payment extends AppModel { 
    var $hasAndBelongsToMany = array(
     'Mainshop'=>array('className'=>'Mainshop', 'unique'=>'false') 
    );  
} 

ビュー

echo $this->Form->create('Mainshop'); 
echo $this->Form->input('name',array('default'=>$mainshop['Mainshop']['name'])); 

echo $this->Form->input('Payment.id', array(
'type' => 'select', 

'options' => array($payments), 

    )); 

echo $this->Form->input('id', array('type'=>'hidden','value'=>$mainshop['Mainshop']   ['id'])); 
echo $this->Form->end('Edit Shop');?> 

コントローラ

if (!empty($this->data)){ 

    $this->Mainshop->save($this->data); 
    $this->redirect(array('action' => 'edit',$this->data['Mainshop']['id'])); 
} 

答えて

1

私の推薦はrelationshiを定義しますモデルのすべてのフィールドを持つP:コントローラで

 var $hasAndBelongsToMany = array(
      'Mainshop'=>array(
       'className'=>'Mainshop', 
       'unique'=>'false', 
       'joinTable' => 'shop_payments', 
       'foreignKey' => 'payments_id', 
       'associationForeignKey' => 'shop_id' 
       ) 
     ); 

)は(作成、追加:

if (!empty($this->data)){ 
    $this->Mainshop->create(); 
    $this->Mainshop->save($this->data); 
    $this->redirect(array('action' => 'edit',$this->data['Mainshop']['id'])); 
}