【问题标题】:PHP Symfony2 add 60 years to the both day Datetime object of a personPHP Symfony2 为一个人的两天 Datetime 对象添加 60 年
【发布时间】:2013-10-09 19:37:42
【问题描述】:

我需要在一个人/工人的出生日期上加上 60 年,这个人存储在数据库中,我有以下代码来定义这个人以及 getter 和 setter:

/**
 * @ORM\Entity
 * @ORM\Table(name="Worker")
 * @ORM\Entity(repositoryClass="Osd\RetireBundle\Entity\WorkerRepository")
 */
class Worker
{
/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $idWorker;

/**
 * @ORM\Column(type="string", length=20)
 */
private $omang;

/**
 * @ORM\Column(type="string", length=100)
 */
private $workerTitle;


/**
 * @ORM\Column(type="string", length=100)
 */
private $workerName;

/**
 * @ORM\Column(type="string", length=100)
 */
private $workerSurname;

/**
 * @ORM\Column(type="date")
 */
private $birthDay;

/**
 * @ORM\Column(type="date")
 */
private $dateOfEmployment;

在这个人/工人内部,我真的不知道在那里这样做是否正确,但我试图创建一个这样的方法:

    public function getRetireDate (){
   if($this->getBirthDay()) 
       return $retireYear = $this->getBirthDay()->add(new DateInterval('P60Y'));
}

我真的不知道在哪里添加该方法?但现在是在工作人员内部(我是 symfony 的新手)。但是当我调用它时,它会给我这个错误:

FatalErrorException: Error: Class 'Osd\RetireBundle\Entity\DateInterval' not found in /var/www/Org/src/Osd/RetireBundle/Entity/Worker.php line 202

有谁做过或知道如何以及在哪里实现此功能? 提前致以问候和感谢。

【问题讨论】:

    标签: php datetime symfony doctrine entity


    【解决方案1】:

    getRetireDate() 函数位于 Worker 实体中。发生的错误可能是您没有DateInterval 实体,或者您忘记将DateInterval 实体包含到您的Worker 实体中。

    【讨论】:

    • DateInterval 不是我 Sumfony 项目中的实体。 DateIntevel 是我从here 获取的内部 PHP 类。而且我真的不知道它是如何工作的,这是我第一次使用它。我会继续研究任何方式。谢谢。我会发布任何进展。
    【解决方案2】:

    我想我已经解决了问题,你的回答@david 真的很有帮助;现在我的方法是这样的:

    public function getRetireYear (){
           return $this->retireYear = $this->getBirthDay()->add(new \DateInterval('P60Y'));
    }
    

    我在 Worker 中有一个私有变量,名为 $retireYear。而已。它工作得很好。 谢谢。

    【讨论】:

    • 谢谢@vascowhite 我对这个解决方案非常满意。
    • 你可以接受这个答案,让其他用户知道你找到了解决方案。
    • 小心并确认出生日期本身没有增加 60 年。 add 方法有点不寻常。您可能想要克隆出生日期然后添加。
    猜你喜欢
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-08
    • 1970-01-01
    相关资源
    最近更新 更多