2013-06-03 1 views
1
public function executeProductAllAccept() 
    { 
     $this->observation = ObservationPeer::retrieveByPK($this->getRequestParameter('id')); 

     $this->forwardUnless((
      $this->observation 
     ), 'observation', 'error'); 

     $this->redirectUnless((
      $this->product 
     ), 'observation/error?flag=insufficientrights');  

     $currentTime = date('Y-m-d H:i:s'); 
     //echo $currentTime.'<br />'; 

     $this->observation->setIsSentBackToPM(0); 
     //echo 'after setIsSentBackToPM'.'<br />'; 
     $this->observation->setIsPartAccepted(0); 
     //echo 'after setIsPartAccepted'.'<br />'; 
     $this->observation->setIsHold(1); 
     //echo 'after setIsHold'.'<br />'; 
     $this->observation->setCostAllAcceptanceTime($currentTime); 
     //echo 'after setCostAllAcceptanceTime'.'<br />'; 
     $this->observation->save(); 
     //echo 'after save'.'<br />'; 
     //exit; 
     return $this->redirect('observation/myObservations'); 
    } 

이 코드는 빈 페이지를 반환합니다. dev 환경에서 시도 -> 다시 빈 페이지.Symfony 1.0.22 객체 저장 실패 - 왜? 이것을 디버깅하는 방법?

그래서 어떤 에코가 추가 되었습니까? 출력은 다음과 같습니다.

2013-06-03 10:40:20 
after setIsSentBackToPM 
after setIsPartAccepted 
after setIsHold 
after setCostAllAcceptanceTime 

이렇게하면 save()를 실행할 때 분명히 어딘가에 실패합니다.

심포니 로그에 보았다 없습니다 : 심포니 실행을 시도하기 전에

  • 오류
  • 는 [정보]를 SELECT는
  • SET 쿼리에 대해 의심의 [정보] 쿼리에 대한 (그래서 뭔가 저장() 실패 쿼리)

아파치 오류 로그에서 보입니다 -> 오류가 없습니다.

그래서 save 메소드 -> symfony propel-build-model을 재구성 해 보았습니다. 그러나 문제는 남아있었습니다. 나는 BaseObservation의 save 메소드를 다른 모델의 save 메소드와 비교했다. - 나는 이상한 것을 보지 못했다.

나는 이것을 추적하는 방법을 모른다. 어떤 아이디어?

편집 : 업데이트 테스트 :

public function executeProductAllAccept() 
    { 
     $this->observation = ObservationPeer::retrieveByPK($this->getRequestParameter('id')); 

     echo 'before test plain save'.'<br />'; 
     $this->observation->save(); 
     echo 'after test plain save'.'<br />'; 

     $this->forwardUnless((
      $this->observation 
     ), 'observation', 'error'); 

     $this->redirectUnless((
      $this->product 
     ), 'observation/error?flag=insufficientrights');  

     $currentTime = date('Y-m-d H:i:s'); 
     echo $currentTime.'<br />'; 

     $this->observation->setIsSentBackToPM(0); 
     echo 'after setIsSentBackToPM'.'<br />'; 
     $this->observation->setIsPartAccepted(0); 
     echo 'after setIsPartAccepted'.'<br />'; 
     $this->observation->setIsHold(1); 
     echo 'after setIsHold'.'<br />'; 
     $this->observation->setCostAllAcceptanceTime($currentTime); 
     echo 'after setCostAllAcceptanceTime'.'<br />'; 
     $this->observation->save(); 
     echo 'after save'.'<br />'; 
     exit; 
     return $this->redirect('observation/myObservations'); 
    } 

결과 :

before test plain save 
after test plain save 
2013-06-03 10:40:20 
after setIsSentBackToPM 
after setIsPartAccepted 
after setIsHold 
after setCostAllAcceptanceTime 
+1

개체를 편집하지 않고 * 저장 *하려고 했습니까? 'retrieveByPK' 바로 다음과 같은가? – j0k

+0

이것은 이상합니다. 내가 제안한대로 테스트 할 코드를 추가했는데 편집 작업없이 save()처럼 보입니다. 편집 된 게시물보기 이제 우리는 무엇이 잘못 될지 모릅니다. – loostro

+1

schema.xml/yml을 볼 수 있습니까? 'setCostAllAcceptanceTime'을 정의하지 않고 저장할 수 있습니까? – j0k

답변

0

좋아,

error_reporting(E_ALL); 
ini_set('display_errors',TRUE); 

이 문제를 해결하는 데 도움 덧붙였다. 내 경우

는 오류 :

Fatal error: Call to undefined method Observation::setCostAllAcceptanceTime() in /xxxxxxxxxxxxxx/modules/observation/actions/actions.class.php on line 792 

어딘가에 스키마에 갱신의 3 선 사이가 손실 된 것 같다. 새 모델을 생성 한 다음 setCostAllAcceptanceTime (및 기타 2 개) 메소드가 생성되지 않아 오류가 발생했습니다.