2011-05-11 5 views
1

폼 클래스에 추가 sfWidgetFormTextarea 위젯을 추가 한 폼이 있습니다.Symfony의 한 폼에서 2 개의 테이블을 업데이트하는 방법은 무엇입니까?

나는 폼에 correpsond 분야에 대한 데이터베이스를 업데이트하여 양식을 저장하지만, 다음 sfWidgetFormTextarea의 을 얻고 텍스트 영역의 값과 ID 모두를 저장하는 새로운 행으로 다른 테이블에 그것을 삽입 할 다른 테이블의 저장된 데이터에 대해 생성 된 번호.

문맥에 넣으면 혼란 스럽습니다. 제 양식은 환자의 혈액 검사에 대한 세부 정보를 얻고 있습니다. 사용자는 테스트를 원할 경우 의견을 추가 할 수도 있습니다. 한 번의 혈액 검사 기록에는 여러 개의 의견이있을 수 있습니다. 이러한 이유로 한 테스트의 모든 주석을 검색 할 수 있도록 테스트 ID로 다른 테이블에 주석을 저장하려고합니다.

나는이 여분의 sfWidgetFormTextarea가 저장 함수를 깨뜨릴 것이고,이 텍스트 영역을 저장할 위치를 알지 못하도록 주석이라는 테이블의 필드가 없을 것이기 때문에 저장 함수를 깨뜨릴 것이라는 것을 깨달았다. 어떻게 든 $ request에서 주석 값을 제거하고 주석 테이블에 삽입해야합니까? 나는 이드가 세이프 기능 (save function)까지 원뿔이 아닌 테트와 관련이 있다고 생각할 필요가있다.

제발 머리가 아파요!

답변

0

수동, 난이 도움이되기를 바랍니다

$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');  
     } 
    } 

아래의 코드를 확인하십시오 양식을 저장할 수 있으며,이 중 ... 당신은 괜찮아 오면 알려

+0

Tnanks을 할 수 있습니다. 나는 그것을 구현하기 전에 그것을 해체하려고 노력하고있다. Table1peer 란 무엇입니까? 나는 그것을 봤고 설명이 없다. – Nicola

+0

@Nicola, 나는 이것이 오래된 것을 알고 있지만'Table1Peer'의 Table1은 예제 테이블이며'[example] Peer' 클래스와 관련이 있습니다. 나는 그 대답이 Propel에 맞춰져 있다고 믿는다. – bassplayer7

관련 문제