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');
}
このコードは、空白のページを返します。開発環境で試してみました->再び空白のページ。
そこで、正確にどこで失敗しているかをテストするために、いくつかのエコーを追加しました。出力は次のとおりです。
2013-06-03 10:40:20
after setIsSentBackToPM
after setIsPartAccepted
after setIsHold
after setCostAllAcceptanceTime
そのため、save() を実行すると、明らかにどこかで失敗します。
symfony ログを調べた:
- エラーなし
- SELECT クエリに関する [情報] のみ
- SET クエリに関する [情報] はありません (symfony がクエリを実行しようとする前に、save() で何かが失敗します)
Apacheエラーログを調べました->エラーはありません。
ということで、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