diff --git a/src/Dibi/Translator.php b/src/Dibi/Translator.php index e5ea23f8..44ae1660 100644 --- a/src/Dibi/Translator.php +++ b/src/Dibi/Translator.php @@ -333,7 +333,7 @@ final class Translator if ($value !== NULL && !is_scalar($value)) { // array is already processed if ($value instanceof Literal && ($modifier === 'sql' || $modifier === 'SQL')) { $modifier = 'SQL'; - } elseif ($value instanceof \DateTime || $value instanceof \DateTimeInterface) { + } elseif (($value instanceof \DateTime || $value instanceof \DateTimeInterface) && ($modifier === 'd' || $modifier === 't')) { // continue } else { $type = is_object($value) ? get_class($value) : gettype($value); diff --git a/tests/dibi/Translator.phpt b/tests/dibi/Translator.phpt index 97c98ff4..503cfa06 100644 --- a/tests/dibi/Translator.phpt +++ b/tests/dibi/Translator.phpt @@ -190,6 +190,11 @@ Assert::same( 'b9%t' => NULL, ])); +Assert::exception(function () use ($conn) { + $conn->translate('SELECT %s', new DateTime('1212-09-26')); +}, 'Dibi\Exception', 'SQL translate error: Invalid combination of type Dibi\DateTime and modifier %s'); + + // like