2017-06-14 103 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对象。现在,日期从表单中设置,但我仍然得到错误。 –

相关问题