2010-11-24 133 views
3

我有用戶HABTM專業。 在用戶編輯中,有一個專業複選框列表。 當我在用戶模型中定義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

bindModel的默認行爲是存在一個find操作,然後恢復爲默認關聯。您可能認爲save操作不會觸發此操作,但如果您使用Cake's count-caching feature或具有afterSave回調的行爲執行find,則可能是錯誤的。

嘗試通過false作爲Model::bindModel調用的第二個參數。這將使您的動態綁定持續到請求的持續時間。通過調用Model::resetAssociations完成saveAll後,您始終可以顯式重置關聯。

+1

第二個參數「false」起作用。你是天才! :d – 2010-11-24 19:00:45