Я использую Symfony и Doctrine, чтобы попытаться сохранить DateInterval для поля (называемого duration
) типа interval
.
. Я получаю следующую ошибку:
An exception occurred while executing 'INSERT INTO workout_sessions (id, location, start_time, end_time, duration, created_at, updated_at, user_id, workout_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)' with params [14, \"home\", \"2019-01-23 08:27:00\", \"2019-01-23 09:45:00\", \"-P00Y00M00DT01H18M00S\", \"2019-01-23 09:04:41\", null, 10, 8]:\n\nSQLSTATE[22007]: Invalid datetime format: 7 ERROR: invalid input syntax for type interval: \"-P00Y00M00DT01H18M00S\""
Мой код выглядит следующим образом:
public function setDuration(): self
{
if ($this->endTime) {
$interval = $this->endTime->diff($this->startTime);
$this->duration = $interval;
}
return $this;
}
В приведенном выше примере endTime
и startTime
являются объектами PHP DateTime.
Проблема заключается в том, что когда Doctrine преобразует DateInterval (созданный $this->endTime->diff($this->startTime)
), он добавляет интервал Postgres к +
или -
.
Когда я удаляю плюс или минус из начала строки и добавляю значение вручную, он работает,Однако, когда я оставлю его включенным, Postgres не примет это значение.
Кто-нибудь знает способ сказать Doctrine, чтобы удалить префиксированный символ?
Редактировать
Используемая версия Dbal - 2.5