我的Symfony应用程序中有一个非常奇怪的错误,我不知道如何修复它。我想在添加特殊DateTime
之后在我的一个实体中设置DateTime
DateInterval
。这是我的代码:
$dateInterval = new \DateInterval('P1DT6H');
$snoozedTo = date_add($sickNote->getSickTo(), $dateInterval);
$channelUser->setSnoozedTo($snoozedTo);
$this->em->persist($channelUser);
在我的UnitTests中,我收到以下错误:
date_add() expects parameter 1 to be DateTime, boolean given
所以我仔细检查$sickNote->getSickTo()
是否真的返回DateTime
。 dump()
返回:
DateTime {#17791
+"date": "2018-01-01 06:00:00.000000"
+"timezone_type": 3
+"timezone": "UTC"
}
对象上的 get_class()
返回DateTime
。
以下是该字段的其他getter方法:
/**
* Get sickTo
* @return Date
*/
public function getSickTo() {
return $this->sickTo;
}
为什么date_add
获得Boolean
而不是DateTime
对象?
修改:我还尝试了objet方法DateTime::add()
。结果相同。
编辑²:这是我对sickTo
的声明:
/**
* @var datetime $sickTo
* @ORM\Column(type="date", nullable=true)
* @Assert\Date()
*/
protected $sickTo;
答案 0 :(得分:0)
sickTo
的声明是错误的。您将其声明为日期但使用日期时间。尝试用类似的东西来改变它:
/**
* @var \DateTime $sickTo
* @ORM\Column(type="datetime", nullable=true)
* @Assert\DateTime()
*/
protected $sickTo;