我正在表单中设置新实体,并且已经创建了一个字段“ created”,我想使用该字段来自动设置到期时间。我希望在设置实体后30分钟将过期字段设置为true。
我创建了一些逻辑,但是我认为它不起作用。
我的代码部分:
$dateNow = new \DateTime();
$entity->setCreated($dateNow)->modify("+33 Minutes");
if($dateNow >= $entity){
$entity->setExpired(true);
$this->em->persist($entity);
$this->em->flush();
}
if($entity->isExpired()) {
throw new /Exception('Sorry,it is expired.');
}
您知道在教义中使用二传手时该怎么做吗?谢谢
在您的示例中,您将DateTime实例与您的实体进行比较,该实体可能是另一种类型,而不是DateTime。
要找出,如果您的实体已过期,只需将设置为创建的DateTime实例与新的DateTime实例进行比较。您可以使用diff()方法。将标记存储在数据库中可能没有用,但是我不知道您的用例。
它看起来类似于此(unestet):
<?php
//...
function isExpired() {
$diff = $this->createdAt->diff(new DateTime());
return $diff->m >= 30;
}
我想更正以上答案,$diff->m
代表月份,分钟为'i',因此正确的代码为$diff->i >= 30