2010-11-24 11 views
3

私はUser HABTM Professionsを持っています。 ユーザー編集では、職業のチェックボックスのリストがあります。 ユーザーモデルでHABTM関係を定義したときに機能していました。その関係は、私はそれを削除し、他の機能を中断し、ユーザのコントローラCakePHP:バインドモデルが動作しない

$this->User->bindModel(
     array(
      'hasAndBelongsToMany' => 
      array(
       'Profession' => 
        array(
         'className'    => 'Profession', 
         'joinTable'    => 'professions_users', 
         'foreignKey'    => 'user_id', 
         'associationForeignKey' => 'profession_id', 
         'unique'     => true, 
         'conditions'    => '', 
         'fields'     => '', 
         'order'     => '', 
         'limit'     => '', 
         'offset'     => '', 
         'finderQuery'   => '', 
         'deleteQuery'   => '', 
         'insertQuery'   => '' 
        ) 
       ) 
      ) 
     ); 

でこれを入れたよう しかし、その結合関数の戻り値も同様です。

今、$ this-> User-> saveAll($ this-> data)を呼び出すと、professions_usersテーブルに行が作成されなくなります。

答えて

7

デフォルトの動作はfindの操作に対して存在し、デフォルトの関連付けに戻ります。デフォルト動作はbindModelです。 save操作ではこれがトリガーされないと思われるかもしれませんが、Cake's count-caching feature、またはfindを実行するafterSaveコールバックの動作を使用すると間違っている可能性があります。

Model::bindModelコールの第2パラメータとしてfalseを渡してみてください。これにより、オンザフライバインディングが要求の持続時間の最後になります。 saveAllが完了した後、いつでも明示的に関連付けをリセットするには、Model::resetAssociationsを呼び出します。

+1

第2パラメータ「false」が機能します。あなたは天才だよ! :D –

関連する問題