2011-12-20 2 views
0

Я пытаюсь правильно использовать saveAll для обновления записей пользователя для нескольких реляционных моделей. Ниже приведен массив, который я использую, чтобы представить функцию 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 
       ) 

     ) 

) 

функция SaveAll возвращает истину, которая хороша, однако я не могу увидеть обновленные значения/строки в реляционных таблицах базы данных с HABTM отношений со столом пользователя. Также он вставляет новую строку пользователя, но я хотел бы обновить пользователя. Я пробовал $ this-> User-> id = 1, но он не работает ...

Есть ли хороший способ обойти эту проблему?

ответ

0

вы попробуйте прочитать значение из таблицы пользователя с помощью $this->User->id = 1 ли? Так, что вы можете сказать, что его не проблема с этим кодом с помощью $this->read Попробуйте добавить скрытое поле ID в форме после того, как вы можете прочитать данные из таблицы пользователей. .После этого попробуйте сохранить снова, если вы не можете обновить данные снова. Затем попробуйте Если сохранить все не работает, то я использовал следующую функцию в моем проекте cakePHP> попробуйте это в вашем контроллере.обмена в соответствии с у вас есть.

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']); 

В моей проблеме мнения с вами ваша Пользователь таблица сырым не выбирает.

Смежные вопросы