Mam taki kod:
  1. $delete = $this->tableGateway->getSql()->delete();
  2. $interval = new SqlExpression('NOW() + INTERVAL ?', [sprintf('%d days', (int) $days)]);
  3. $delete->where->lessThan('some_date', $interval);
  4. \Zend\Debug\Debug::dump($delete->getSqlString($this->tableGateway->getAdapter()->getPlatform()));
  5. return $this->tableGateway->deleteWith($delete) > 0;


I cały czas dostaję: Statement could not be executed (42601 - 7 - BŁĄD: błąd składni w lub blisko "$1" LINIA 1: ..." WHERE "some_date" < NOW() + INTERVAL $1 ^)
dump zwraca poprawne zapytanie które po przeklejeniu do pgadmin bez problemu się wykonuje

Profiler:
Cytat
SQL DELETE FROM "schemat"."tabela" WHERE "some_date" < NOW() + INTERVAL :where1subpart1 Params where1subpart1 => '0 days'
Time 207,90 µs


Sprawdzałem wartości w Zend\Db\Adapter\Driver\Pdo\Statement->execute() i teoretycznie wszystko się zgadza, jest bindowane jako PARAM_STR.

Jakieś pomysły?
Tymczasowo mogę to obejść robiąc np NOW() + INTERVAL '1 day' * ? ale chciałbym wiedzieć dlaczego nie działa.