2012-05-08 13 views
0

私は2つのテーブルと結合テーブルを持っています。私は$ hasAndBelongsToManyを使ってみましたが、仕事がなかったので、代わりに私は結合テーブルのモデルを作成して使用しました。cakephp HABTM association saveAll?

User hasMany Membership 
Membership belongsTo User, Club 
Club hasMany Membership. 

私は両方のテーブルに保存するフォームを持っています。

function dashboard_add(){ 

     $user = $this->Session->read('User'); 

     $register = false; 

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



       if($this->Club->saveAll($this->data)){ 
        $this->Session->setFlash(__('You have registered your club. You will be contacted soon!', true), 'default', array('class' => 'success')); 
        $this->redirect(array('action' => 'index')); 
       } else { 
        $this->Session->setFlash(__('There was a problem with your registration. Please, try again.', true), 'default', array('class' => 'warning')); 
       } 

     } 


     if (empty($this->data)) { 
      $this->data = $this->User->read(null, $user['User']['id']); 
     } 

     $this->set(compact('register')); 

    } 

Userモデルが

var $hasMany = array(
     'Membership' => array(
      'className' => 'Membership', 
      'foreignKey' => 'user_id' 
     ) 
    ); 

メンバーシップモデルが

var $belongsTo = array('User','Membership'); 

を持っていたクラブのモデルは、私はすべてのエラーを得ることはありません

var $hasMany = array(
     'Membership' => array(
      'className' => 'Membership', 
      'foreignKey' => 'club_id' 
     ), 
     'Upload' => array(
      'className' => 'Upload', 
      'foreignKey' => 'club_id' 
     ) 
    ); 

を持っています。クラブテーブルが作成されますが、メンバーシップとユーザーテーブルは挿入/更新されません。

更新:デバッグ($ this-> Club-> save($ this-> data));

Array 
(
    [User] => Array 
     (
      [id] => 1 
      [first_name] => this 
      [last_name] => that 
      [company_name] => other 
      [city] => this 
      [state] => that 
      [zip] => other 
      [telephone] => that 
      [email_address] => this 
     ) 

    [Club] => Array 
     (
      [address] => fvdfvx 
      [title] => xcvxcv 
      [category] => xcvxcv 
      [modified] => 2012-05-03 06:31:12 
     ) 

) 

答えて

0

cakePHP 1.3.xを使用しているとします。例えば..あなたが保存するすべてのモデルを持つ配列を生成する必要があり、ケーキは、同時に多くのモデルを節約する方法を理解するためにマニュアルを参照してください:あなたの$ this - でどうやら

Array 
(
    [Article] => Array 
     (
      [title] => My first article 
     ) 
    [Comment] => Array 
     (
      [0] => Array 
       (
        [comment] => Comment 1 
      [user_id] => 1 
       ) 
     [1] => Array 
       (
        [comment] => Comment 2 
      [user_id] => 2 
       ) 
     ) 
) 

http://book.cakephp.org/1.3/view/1031/Saving-Your-Data

>あなたは単純な配列[User]しか持っていません。例のように複数の配列を保存することはできません。

私は助けてくれることを願っています。よろしくです。 よろしくお願いします。

+0

私はドキュメントを読むでしょう。 saveAllの直後に$ this-> data配列で質問を更新しました。 – madphp

+0

修正。ドキュメントのようにsave()に変更しました。 – madphp