Как обновить 2 таблицы из одной формы в Symfony? - PullRequest
1 голос
/ 11 мая 2011

У меня есть форма, в которую я добавил дополнительный виджет sfWidgetFormTextarea в классе формы.

Я хочу сохранить форму, обновив базу данных для полей, соответствующих форме, но затем получаю значение для sfWidgetFormTextarea и вставить его в другую таблицу в виде новой строки, сохраняя как значение textarea, так и номер идентификатора, созданный для сохраненных данных в другой таблице.

Звучит запутанно, так что, может быть, если я скажу это в контексте, это будет не так.Моя форма получает подробности анализа крови пациента.Пользователь также может добавить любые комментарии, если они хотят о тесте.Одна запись анализа крови может иметь несколько комментариев.По этой причине я хочу сохранить комментарий в другой таблице с идентификатором теста, чтобы можно было получить все комментарии для одного теста.

Я понял, что этот дополнительный sfWidgetFormTextarea нарушит функцию сохранения, потому что он пойдет на его сохранение, и в таблице не будет поля с именем comment, поэтому он не будет знать, куда сохранить это значение textarea в,Должен ли я как-то удалить значение комментария из $ request и вставить его в таблицу комментариев?Я также должен был бы знать, что думал об идентификаторах, к которым он относится, но это не конус, пока не сохранится функция.

Пожалуйста, помогите, у меня болит голова !!

1 Ответ

0 голосов
/ 13 мая 2011

Вы можете сохранить форму вручную, пожалуйста, проверьте фрагмент кода ниже

$this->form->bind($request->getParameter('formname'));
  if ($this->form->isValid()) {
      $arrValues = $this->form->getValues();

      //get dataobject base on criteria...
      $objTable1 = Table1Peer::getByField($arrValues['my_field']);

      if(is_object($objTable1)){
         $objTable1->setField($arrValues['my_field']);
         //update
         if($objTable1->save()){
            $objTable2 = new Table2();
            $objTable2->setPostId($objTable1->getId()); 
            $objTable2->setComment($arrValues['my_comment']);
            if($objTable2->save()){
              $this->redirect('@action_name');
              $this->getUser()->setFlash('success', 'comment saved');
            }else{
              $this->getUser()->setFlash('error', 'failed to save form, contact admin');
            }  
         }else{
           $this->getUser()->setFlash('error', 'failed to save form, contact admin');    
         }
  } 

Надеюсь, это поможет, дайте мне знать, если вы приедете хорошо ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...