2012-05-08 2 views
0

У меня есть две таблицы и таблица соединений. Я попытался использовать $ 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')); 

    } 

Модель Пользователь имеет

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

Члены группы Модель имеет

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

Модель Club имеет

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

Я не получаю никаких ошибок. Таблица клубов заполняется, но членство и таблица пользователей не вставляют/не обновляют.

UPDATE: debug ($ 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. Обратитесь к документации, чтобы понять, как торт экономит много моделей в то же время, вам нужно создать массив со всеми моделями, чтобы сохранить .. например:

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

Видимо в ваших $ this-> данных у вас есть простой массив [Пользователь]. а не несколько массивов для сохранения, как в примере.

Надеюсь, я помог. С уважением.

+0

Я прочитаю документацию. Я обновил свой вопрос с помощью массива $ this-> data сразу после saveAll. – madphp

+0

коррекция. Я изменил его, чтобы сохранить(), как говорит документация. – madphp

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