Невозможно сохранить значение для типа поля 'interval' с Doctrine for Postgres - PullRequest
0 голосов
/ 23 января 2019

Я использую 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...