From 6ebb2e33cda5735ba9739002527b71bc2e1378a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Va=C5=A1ek=20Henzl?= Date: Thu, 5 Nov 2020 11:05:20 +1300 Subject: [PATCH 1/2] Infer `datetime_immutable` DBAL type for `\DateTimeImmutable` instance --- lib/Doctrine/ORM/Query/ParameterTypeInferer.php | 6 +++++- tests/Doctrine/Tests/ORM/Query/ParameterTypeInfererTest.php | 5 +---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/Doctrine/ORM/Query/ParameterTypeInferer.php b/lib/Doctrine/ORM/Query/ParameterTypeInferer.php index 07b78f008bd..7524581c245 100644 --- a/lib/Doctrine/ORM/Query/ParameterTypeInferer.php +++ b/lib/Doctrine/ORM/Query/ParameterTypeInferer.php @@ -53,7 +53,11 @@ public static function inferType($value) return Type::BOOLEAN; } - if ($value instanceof \DateTime || $value instanceof \DateTimeInterface) { + if ($value instanceof \DateTimeImmutable) { + return Type::DATETIME_IMMUTABLE; + } + + if ($value instanceof \DateTimeInterface) { return Type::DATETIME; } diff --git a/tests/Doctrine/Tests/ORM/Query/ParameterTypeInfererTest.php b/tests/Doctrine/Tests/ORM/Query/ParameterTypeInfererTest.php index 35e9bf2f57e..3596236450f 100644 --- a/tests/Doctrine/Tests/ORM/Query/ParameterTypeInfererTest.php +++ b/tests/Doctrine/Tests/ORM/Query/ParameterTypeInfererTest.php @@ -18,6 +18,7 @@ public function providerParameterTypeInferer() ["bar", PDO::PARAM_STR], ["1", PDO::PARAM_STR], [new \DateTime, Type::DATETIME], + [new \DateTimeImmutable(), Type::DATETIME_IMMUTABLE], [new \DateInterval('P1D'), Type::DATEINTERVAL], [[2], Connection::PARAM_INT_ARRAY], [["foo"], Connection::PARAM_STR_ARRAY], @@ -26,10 +27,6 @@ public function providerParameterTypeInferer() [true, Type::BOOLEAN], ]; - if (PHP_VERSION_ID >= 50500) { - $data[] = [new \DateTimeImmutable(), Type::DATETIME]; - } - return $data; } From 14ebf4e2c8ce48fba316939edd0afa9dca61baf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Va=C5=A1ek=20Henzl?= Date: Sun, 8 Nov 2020 20:06:44 +1300 Subject: [PATCH 2/2] Make CS check happy --- lib/Doctrine/ORM/Query/ParameterTypeInferer.php | 6 ++++-- tests/Doctrine/Tests/ORM/Query/ParameterTypeInfererTest.php | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/Doctrine/ORM/Query/ParameterTypeInferer.php b/lib/Doctrine/ORM/Query/ParameterTypeInferer.php index 7524581c245..b8acd9d04f0 100644 --- a/lib/Doctrine/ORM/Query/ParameterTypeInferer.php +++ b/lib/Doctrine/ORM/Query/ParameterTypeInferer.php @@ -19,6 +19,8 @@ namespace Doctrine\ORM\Query; +use DateTimeImmutable; +use DateTimeInterface; use Doctrine\DBAL\Connection; use Doctrine\DBAL\Types\Type; @@ -53,11 +55,11 @@ public static function inferType($value) return Type::BOOLEAN; } - if ($value instanceof \DateTimeImmutable) { + if ($value instanceof DateTimeImmutable) { return Type::DATETIME_IMMUTABLE; } - if ($value instanceof \DateTimeInterface) { + if ($value instanceof DateTimeInterface) { return Type::DATETIME; } diff --git a/tests/Doctrine/Tests/ORM/Query/ParameterTypeInfererTest.php b/tests/Doctrine/Tests/ORM/Query/ParameterTypeInfererTest.php index 3596236450f..5a1ac5fe3ee 100644 --- a/tests/Doctrine/Tests/ORM/Query/ParameterTypeInfererTest.php +++ b/tests/Doctrine/Tests/ORM/Query/ParameterTypeInfererTest.php @@ -2,6 +2,7 @@ namespace Doctrine\Tests\ORM\Query; +use DateTimeImmutable; use Doctrine\ORM\Query\ParameterTypeInferer; use Doctrine\DBAL\Connection; use Doctrine\DBAL\Types\Type; @@ -18,7 +19,7 @@ public function providerParameterTypeInferer() ["bar", PDO::PARAM_STR], ["1", PDO::PARAM_STR], [new \DateTime, Type::DATETIME], - [new \DateTimeImmutable(), Type::DATETIME_IMMUTABLE], + [new DateTimeImmutable(), Type::DATETIME_IMMUTABLE], [new \DateInterval('P1D'), Type::DATEINTERVAL], [[2], Connection::PARAM_INT_ARRAY], [["foo"], Connection::PARAM_STR_ARRAY],