2014-10-02 4 views
0

В cakephp я не могу получить данные, возвращенные из 1 таблицы, для сохранения в другой таблице. У меня есть данные, предварительно заполненные в форме из таблицы Tutors, и все, что я хочу сделать, это сохранить эти данные как новую строку в table tutorEdit (не путать с функцией редактирования). Проблема, которую я получаю, заключается в том, что я получаю данные для сохранения, но tutorEdit не сохраняет никаких возвращенных данных (без ошибок).не удается сохранить данные из 1 таблицы в другую таблицу

public function tutor_edit($id = null) { 
     $this->loadModel('Tutor'); 

     $this->Tutor->id = $id; 

     debug($this->request->data); 

     if (!$this->Tutor->exists()) { 
      throw new NotFoundException(__('Invalid tutor')); 
     } 
     if ($this->request->is('post') ) { 

      if ($this->TutorEdit->save($this->request->data)) { 
       $this->Session->setFlash(__('The tutor details to be edited have ben forwarded to management'), 'flash_success'); 
       // $this->redirect(array('controller'=> 'tutors' , 'action' => 'tutordetails')); 
      } else { 
       $this->Session->setFlash(__('The tutor edit details could not be saved. Please, try again.'), 'flash_alert'); 
      } 



     } else { 
      $this->request->data = $this->Tutor->read(null, $id); 
     } 

///// 
    <?php 
        echo $this->Form->create('Tutor',array('class' => 'form-horizontal')); 
        echo $this->Form->input('id', $formHorizontalHtmlOptions); 
        echo $this->Form->input('first_name', $formHorizontalHtmlOptions); 
        echo $this->Form->input('last_name', $formHorizontalHtmlOptions); 
        echo $this->Form->input('email', $formHorizontalHtmlOptions); 
        echo $this->Form->input('mobile', $formHorizontalHtmlOptions); 
        echo $this->Form->input('home_phone', $formHorizontalHtmlOptions); 
        echo $this->Form->input('work_phone', $formHorizontalHtmlOptions); 
        echo $this->Form->input('gender', array_merge($formHorizontalHtmlOptions, array('type' => 'select', 'options' => $gender))); 
        echo $this->Form->end('Save Edit Request'); 
        ?> 

не увидел ничего об этом в http://book.cakephp.org/2.0/en/models/saving-your-data.html

ответ

1

Поскольку данные, которые вы пытаетесь сохранить это «Репетитор», а не «TutorEdit». В этой связи, которую вы разделили, в первом разделе показан правильный формат массива, который необходимо сохранить.

Попробуйте это:

if ($this->request->is('post') ) { 
    $tutoredit = array('TutorEdit' => $this->request->data['Tutor']); 

    if ($this->TutorEdit->save($tutoredit)) { 
      $this->Session->setFlash(__('The tutor details to be edited have ben forwarded to management'), 'flash_success'); 
    } else { 
      $this->Session->setFlash(__('The tutor edit details could not be saved. Please, try again.'), 'flash_alert'); 
    } 
} 
+0

Этот не работало. Я получаю ошибку, но данные не были сохранены, даже если данные request-> верны. – ajt

+0

он работал с put вместо сообщения? также мне нужны дополнительные поля в tutorEdit, а также данные преподавателя. Я хочу добавить это в контроллер, но как это сделать? – ajt

+0

@ajt - Дополнительные поля. Просто добавьте их в форму (убедитесь, что их имена являются именами полей TutorEdit). В терминах «put» используйте «OR» ('||') в предложении 'if' – AgRizzo