diff --git a/src/Dibi/Drivers/FirebirdDriver.php b/src/Dibi/Drivers/FirebirdDriver.php index 50551a52..cf6890f6 100644 --- a/src/Dibi/Drivers/FirebirdDriver.php +++ b/src/Dibi/Drivers/FirebirdDriver.php @@ -259,6 +259,12 @@ class FirebirdDriver implements Dibi\Driver } + public function escapeDateInterval(\DateInterval $value): string + { + throw new Dibi\NotImplementedException; + } + + /** * Encodes string for use in a LIKE statement. */ diff --git a/src/Dibi/Drivers/MySqliDriver.php b/src/Dibi/Drivers/MySqliDriver.php index f38630aa..c04e15e4 100644 --- a/src/Dibi/Drivers/MySqliDriver.php +++ b/src/Dibi/Drivers/MySqliDriver.php @@ -302,6 +302,12 @@ class MySqliDriver implements Dibi\Driver } + public function escapeDateInterval(\DateInterval $value): string + { + throw new Dibi\NotImplementedException; + } + + /** * Encodes string for use in a LIKE statement. */ diff --git a/src/Dibi/Drivers/OdbcDriver.php b/src/Dibi/Drivers/OdbcDriver.php index 17b6ac34..a235df56 100644 --- a/src/Dibi/Drivers/OdbcDriver.php +++ b/src/Dibi/Drivers/OdbcDriver.php @@ -238,6 +238,12 @@ class OdbcDriver implements Dibi\Driver } + public function escapeDateInterval(\DateInterval $value): string + { + throw new Dibi\NotImplementedException; + } + + /** * Encodes string for use in a LIKE statement. */ diff --git a/src/Dibi/Drivers/OracleDriver.php b/src/Dibi/Drivers/OracleDriver.php index 369a24e5..4d7aa74c 100644 --- a/src/Dibi/Drivers/OracleDriver.php +++ b/src/Dibi/Drivers/OracleDriver.php @@ -257,6 +257,12 @@ class OracleDriver implements Dibi\Driver } + public function escapeDateInterval(\DateInterval $value): string + { + throw new Dibi\NotImplementedException; + } + + /** * Encodes string for use in a LIKE statement. */ diff --git a/src/Dibi/Drivers/PdoDriver.php b/src/Dibi/Drivers/PdoDriver.php index 1e07af3f..f9117a70 100644 --- a/src/Dibi/Drivers/PdoDriver.php +++ b/src/Dibi/Drivers/PdoDriver.php @@ -310,6 +310,12 @@ class PdoDriver implements Dibi\Driver } + public function escapeDateInterval(\DateInterval $value): string + { + throw new Dibi\NotImplementedException; + } + + /** * Encodes string for use in a LIKE statement. */ diff --git a/src/Dibi/Drivers/PostgreDriver.php b/src/Dibi/Drivers/PostgreDriver.php index d3fbdaf5..fdade5d4 100644 --- a/src/Dibi/Drivers/PostgreDriver.php +++ b/src/Dibi/Drivers/PostgreDriver.php @@ -304,6 +304,12 @@ class PostgreDriver implements Dibi\Driver } + public function escapeDateInterval(\DateInterval $value): string + { + throw new Dibi\NotImplementedException; + } + + /** * Encodes string for use in a LIKE statement. */ diff --git a/src/Dibi/Drivers/SqliteDriver.php b/src/Dibi/Drivers/SqliteDriver.php index d5d1c9b7..1f97f509 100644 --- a/src/Dibi/Drivers/SqliteDriver.php +++ b/src/Dibi/Drivers/SqliteDriver.php @@ -242,6 +242,12 @@ class SqliteDriver implements Dibi\Driver } + public function escapeDateInterval(\DateInterval $value): string + { + throw new Dibi\NotImplementedException; + } + + /** * Encodes string for use in a LIKE statement. */ diff --git a/src/Dibi/Drivers/SqlsrvDriver.php b/src/Dibi/Drivers/SqlsrvDriver.php index 81871622..f939a49a 100644 --- a/src/Dibi/Drivers/SqlsrvDriver.php +++ b/src/Dibi/Drivers/SqlsrvDriver.php @@ -231,6 +231,12 @@ class SqlsrvDriver implements Dibi\Driver } + public function escapeDateInterval(\DateInterval $value): string + { + throw new Dibi\NotImplementedException; + } + + /** * Encodes string for use in a LIKE statement. */ diff --git a/src/Dibi/Translator.php b/src/Dibi/Translator.php index 8b95238b..12907b55 100644 --- a/src/Dibi/Translator.php +++ b/src/Dibi/Translator.php @@ -456,6 +456,9 @@ final class Translator } elseif ($value instanceof \DateTimeInterface) { return $this->driver->escapeDateTime($value); + } elseif ($value instanceof \DateInterval) { + return $this->driver->escapeDateInterval($value); + } elseif ($value instanceof Literal) { return (string) $value; diff --git a/src/Dibi/interfaces.php b/src/Dibi/interfaces.php index 429b15d2..9f6b2122 100644 --- a/src/Dibi/interfaces.php +++ b/src/Dibi/interfaces.php @@ -91,6 +91,8 @@ interface Driver function escapeDateTime(\DateTimeInterface $value): string; + function escapeDateInterval(\DateInterval $value): string; + /** * Encodes string for use in a LIKE statement. */ diff --git a/tests/dibi/Translator.DateInterval.phpt b/tests/dibi/Translator.DateInterval.phpt new file mode 100644 index 00000000..982b42a4 --- /dev/null +++ b/tests/dibi/Translator.DateInterval.phpt @@ -0,0 +1,17 @@ +formatValue(new DateInterval('PT10H20M30S'), null); + }, Dibi\Exception::class); +}