$delete = $this->tableGateway->getSql()->delete(); $delete->where->lessThan('some_date', $interval); \Zend\Debug\Debug::dump($delete->getSqlString($this->tableGateway->getAdapter()->getPlatform())); 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
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.