我必须存储小时和分钟。因此,在我的实体中,我声明了“时间”类型。 但是当我发送表格时,出现错误:
无法将类型为“整数”的PHP值“ 16200”转换为类型“时间”。 预期为以下类型之一:null,DateTime
/**
*
* @ORM\Column(type="time")
*/
private $timeSupport;
/**
* @return mixed
*/
public function getTimeSupport()
{
return $this->timeSupport;
}
/**
* @param mixed $timeSupport
*/
public function setTimeSupport($timeSupport)
{
$this->timeSupport = $timeSupport;
}
->add('timeSupport', TimeType::class, array(
'input' => 'timestamp',
'widget' => 'choice',
'minutes' => array("0"=>"0","15"=>"15","30"=>"30","45"=>"45"),
'label' => 'Nombres d\'heures de support',
));
你知道我的错误来自哪里吗?
答案 0 :(得分:1)
Doctrine的Time Type使用PHP的DateTime处理其数据。解决问题的一种方法是将输入字段更改为使用datetime
而不是timestamp
:
->add('timeSupport', TimeType::class, array(
'input' => 'datetime',
'widget' => 'choice',
'minutes' => array("0"=>"0","15"=>"15","30"=>"30","45"=>"45"),
'label' => 'Nombres d\'heures de support',
));
如果您无法进行上述更改,则可以使用Data Transformer将$timeSupport
从DateTime
转换为timestamp
,然后再显示表单并返回到{ {1}}提交表单后。