Чтобы предоставить пару других альтернатив уже заданным ответам со стороны объекта.
Вам не нужно добавлять или изменять дату, вы можете создать новый объект DateTime с относительными форматами http://php.net/manual/en/datetime.formats.relative.php
Например: last friday of june 2011
(2011-06-24)
Было не совсем понятно, какое поведение было после ОП или возникли проблемы, поэтому предоставили несколько методов.
Если вы хотите добавить 2 часа при создании объекта
/**
* "now" is implicit
*/
public function __construct()
{
$this->assigneddate = new \DateTime;
$this->expirydate = new \DateTime('+2 hour');
}
Или когда происходит обновление
/**
* @PreUpdate
*/
public function updated()
{
$this->assigneddate = new \DateTime;
$this->expirydate = new \DateTime('+2 hour');
}
Еще одна альтернатива для обеспечения того, чтобы существующее значение обновлялось в Doctrine, когда для него вызывается изменение / add / sub. С PHP 5.5
теперь вы можете использовать DateTimeImmutable
Так что если вы хотите увеличить / изменить время expirydate
на 2 часа.
public function __construct()
{
$this->expirydate = new \DateTimeImmutable;
$this->assigneddate = new \DateTimeImmutable;
}
/**
* @PreUpdate
*/
public function updated()
{
$this->assigneddate = new \DateTimeImmutable;
$this->expirydate = $this->expirydate->modify('+2 hour');
}
Это заставит expirydate
добавить 2 часа к существующему выдоху, так как DateTimeImmutable
всегда будет возвращать новый объект, который затем будет обрабатываться доктриной.
http://php.net/manual/en/class.datetimeimmutable.php