【发布时间】:2017-11-11 14:47:02
【问题描述】:
我的 Symfony 应用程序中有一个非常奇怪的错误,我不知道如何修复它。在添加一个特殊的DateInterval 后,我想在我的一个实体中设置一个DateTime 和DateTime。这是我的代码:
$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 对象?
编辑:我也尝试了对象方法DateTime::add()。结果一样。
Edit²:这是我对sickTo的声明:
/**
* @var datetime $sickTo
* @ORM\Column(type="date", nullable=true)
* @Assert\Date()
*/
protected $sickTo;
【问题讨论】:
-
可以出示
sickTo的声明吗? -
我为此编辑了我的问题。
-
如果您尝试
@var \DateTime和type="datetime"? (别忘了更新你的数据库) -
type = datetime 正如@SylvainAttoumani 所说?
-
谢谢大家。我必须将类型
type="datetime"和断言更改为@Assert\DateTime()。
标签: php symfony datetime php-7