2011-12-20 118 views
0

我想正確使用saveAll更新多個關係模型的用戶記錄。下面是我使用提交白水功能數組:Cakephp SaveAll與多個關係模型

Array 
(
    [InterestsubsUser] => Array 
     (
      [0] => Array 
       (
        [interestsub_id] => 3 
        [user_id] => 1 
       ) 

      [1] => Array 
       (
        [interestsub_id] => 4 
        [user_id] => 1 
       ) 

      [2] => Array 
       (
        [interestsub_id] => 5 
        [user_id] => 1 
       ) 

     ) 

    [User] => Array 
     (
      [relationship_status_id] => 1 
      [ethnicity_id] => 7 
      [age] => 27 
      [height_id] => 1 
      [weight_id] => 1 
      [image] => testing 
     ) 

    [LookingforsUser] => Array 
     (
      [0] => Array 
       (
        [lookingfor_id] => 2 
        [user_id] => 1 
       ) 

      [1] => Array 
       (
        [lookingfor_id] => 3 
        [user_id] => 1 
       ) 

      [2] => Array 
       (
        [lookingfor_id] => 4 
        [user_id] => 1 
       ) 

      [3] => Array 
       (
        [lookingfor_id] => 5 
        [user_id] => 1 
       ) 

     ) 

    [SocialLinksUser] => Array 
     (
      [0] => Array 
       (
        [social_link_id] => 1 
        [user_id] => 1 
       ) 

      [1] => Array 
       (
        [social_link_id] => 2 
        [user_id] => 1 
       ) 

      [2] => Array 
       (
        [social_link_id] => 3 
        [user_id] => 1 
       ) 

     ) 

) 

白水函數返回true這是很好的,但是我看不到在關係數據庫表中的任何更新值/行與用戶表HABTM關係。它也插入新的用戶行,但我想更新用戶。我試過$ this-> User-> id = 1但它不工作...

是否有解決此問題的好方法?

回答

0

你有沒有嘗試使用$this->User->id = 1從用戶表中讀取值?。所以,你可以說,它不是用$this->read 嘗試在你的窗體中添加隱藏標識字段代碼的問題之後,你可以閱讀用戶表中的數據。 。然後嘗試保存再次,如果你不能再次更新數據。然後嘗試 如果保存所有不工作,然後我在我的cakePHP項目中使用folwowing功能>嘗試在您的controller.change根據 字段你有。

function _Fill_user_array($user=array(),$user_type=null,$mode=null){ 
     if(! array_key_exists('User',$user)){ return; } 
     //logic for update 
     $this->data['User']['updated_date'] =date('Y-m-d'); 
     $this->data['User']['updated_by'] =$this->Auth->user('id'); 

     if($mode==null){ 
     // logic for new entry 
      $this->data['User']['registered_date'] = date('Y-m-d');   
      $this->data['User']['created_by'] =$this->Auth->user('id');   
      $this->data['User']['user_type'] = $user_type; 
     } 

} 

而在你的更新動作可以調用以下

`$this->_Fill_user_array($this->data,null,'UPDATE');` This will update you data 

或者您可以使用下面的方法只保存到用戶表後數據保存到[InterestsubsUser。

$this->User->id = ['ID you wanted to select']; 
$this->User->save($this->data['User']); 

在我看來你的問題是你的用戶表raw未選擇。