Вы можете создать способ getTimestamp()
, который вернет объект new \DateTime($this->getDate()->format('Y-m-d') . ' ' . $this->getTime()->format('H:i:s'))
и создаст метод setTimestamp(\DateTime $date)
, который установил бы два значения, разделив дату и время на отдельные части.
public function setDate(\DateTime $date)
{
$this->date = $date;
}
public function getTime()
{
return $date;
}
public function setTime(\DateTime $date)
{
$this->date = $date;
}
public function getTime()
{
return $date;
}
public function getTimeStamp() {
return new \DateTime($this->getDate()->format('Y-m-d') . ' ' . $this->getTime()->format('H:i:s'));
}
public function setTimeStamp(\DateTime $timestamp) {
$this->setDate(new \DateTime($timestamp->format('Y-m-d'));
$this->setTime(new \DateTime($timestamp->format('H:i:s'));
}
или что-то в этом роде. Затем вы можете использовать только код get/setTimestamp()
.
DQL
Вы передаете свой штамп времени, как один парам и свяжешь 2 Params, как это:
public function getSomething(\DateTime $timestamp, $someparam) {
$dql = "SELECT ... FROM ... WHERE date = :date AND time = :time"
// Create query and params binding
// param('date', $timestamp->format('Y-m-d'));
// param('time', $timestamp->format('H:i:s'));
return $result;
}
Вы, возможно, придется обернуть ваши PARAMS значения в new \DateTime()
поскольку учение нуждается в DateTime экземпляр как дата, время и временная метка.
Это дает вам простой интерфейс для поддержки вашего кода, но позволяет сделать абстракцию схемы базы данных.
Какая версия доктрины? – j0k
Я использую 2.3.0. –