2017-06-14 255 views
0

我知道這似乎是一種非常常見的錯誤類型,但在查看後,我找不到修復我的問題。 所以我有一個擁有多個DateTime字段的實體。他們在我的MySQL數據庫中聲明爲DATETIME。 這裏是我的實體的利益Symfony在字符串上調用成員函數格式()

/** 
    * @Doctrine\Column(name="dateOuvertureDossier", type="datetime", nullable=false) 
    * @Assert\NotBlank(message="Le date est obligatoire.") 
    */ 
    private $dateOuvertureDossier; 
/** 
* @Doctrine\Column(name="premiereDateEvaluation", type="datetime", nullable=false) 
* @Assert\NotBlank(message="Le date est obligatoire.") 
*/ 
private $premiereDateEvaluation; 

/** 
* @Doctrine\Column(name="deuxiemeDateEvaluation", type="datetime", nullable=true) 
*/ 
private $deuxiemeDateEvaluation; 

/** 
* @Doctrine\Column(name="troisiemeDateEvaluation", type="datetime", nullable=true) 
*/ 
private $troisiemeDateEvaluation; 

/** 
* @Doctrine\Column(name="quatriemeDateEvaluation", type="datetime", nullable=true) 
*/ 
private $quatriemeDateEvaluation; 

只是一部分,這裏是我的表格只有感興趣的部分

$builder ->add('dateOuvertureDossier', DateTimeType::class, array(
       'required' => true, 
       'input' => 'datetime' 
      )) 
      ->add('premiereDateEvaluation', DateTimeType::class, array(
       'required' => true, 
       'input' => 'datetime'     
      )) 
      ->add('deuxiemeDateEvaluation', DateTimeType::class, array(
       'required' => false, 
       'input' => 'datetime'     
      )) 
      ->add('troisiemeDateEvaluation', DateTimeType::class, array(
       'required' => false, 
       'input' => 'datetime'     
      )) 
      ->add('quatriemeDateEvaluation', DateTimeType::class, array(
       'required' => false, 
       'input' => 'datetime')) 

這裏是一個什麼樣我想在我的控制器做榜樣

if($form->isSubmitted()) 
     { 
      $miseAjourInfoSuiviDossier = $form->getData(); 

      if($miseAjourInfoSuiviDossier->getUtilisateur() != null && 
       $miseAjourInfoSuiviDossier->getCompagnieAssurance() != null && 
       $miseAjourInfoSuiviDossier->getVilleClient() != null && 
       $miseAjourInfoSuiviDossier->getNumeroDossierAssurance() != null && 
       $miseAjourInfoSuiviDossier->getNomClient() != null && 
       $miseAjourInfoSuiviDossier->getDateOuvertureDossier() != null && 
       $miseAjourInfoSuiviDossier->getPremiereDateEvaluation() != null && 
       $miseAjourInfoSuiviDossier->getGaa() != null && 
       $miseAjourInfoSuiviDossier->getEtat() != null 
      ) 
      { 

錯誤:調用成員函數格式()字符串

似乎Symfony是comfused,並認爲我希望日期存儲爲一個字符串,但我不明白爲什麼。 任何幫助,將不勝感激,在此先感謝!

+0

你可以檢查getDateOuvertureDossier方法是否返回字符串或DateTime嗎? –

+0

當設置setDateOuvertureDossier時,應該填充一個dateTime對象,而不是字符串..注意 – Albeis

+0

@AlvinBunk,是的,我已經嘗試在getter中返回一個新的DateTime對象,比如'new DateTime($ this-> DateOuverture)'I得到以下錯誤:DateTime :: __ construct()期望參數1是字符串,給定的對象,這導致我相信是的,該吸氣劑返回一個DateTime對象 –

回答

1

你有沒有嘗試刪除格式(),只需傳遞$ DateTimeOuvertureDossier?像這樣:

$DateTimeOuvertureDossier = $miseAjourInfoSuiviDossier->getDateOuvertureDossier(); 
if($DateTimeOuvertureDossier != null) 
{ 
    $miseAjourInfoSuiviDossier->setDateOuvertureDossier($DateTimeOuvertureDossier); 
} 
+2

他是什麼被稱爲猜測,並可以很容易導致反對票。 $ DateTimeOuvertureDossier應該是一個日期時間對象。這並不意味着其他地方存在問題。 – Cerad

+0

我曾嘗試刪除格式化方法。現在唯一的事情是,我最初爲控制器發佈的所有代碼都是無用的。查看我將要更新的代碼。我傾倒了這個對象,它確實是一個DateTime對象。現在,日期從表單中設置,但我仍然得到錯誤。 –

相關問題