Symfony-自动设置到期时间

问题描述 投票:0回答:2

我正在表单中设置新实体,并且已经创建了一个字段“ 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.');
    }

您知道在教义中使用二传手时该怎么做吗?谢谢

php symfony doctrine symfony4 getter-setter
2个回答
1
投票

在您的示例中,您将DateTime实例与您的实体进行比较,该实体可能是另一种类型,而不是DateTime。

要找出,如果您的实体已过期,只需将设置为创建的DateTime实例与新的DateTime实例进行比较。您可以使用diff()方法。将标记存储在数据库中可能没有用,但是我不知道您的用例。

它看起来类似于此(unestet):

<?php
//...
function isExpired() {
    $diff = $this->createdAt->diff(new DateTime());
    return $diff->m >= 30;
}

0
投票

我想更正以上答案,$diff->m代表月份,分钟为'i',因此正确的代码为$diff->i >= 30

© www.soinside.com 2019 - 2024. All rights reserved.