diff --git a/lib/Doctrine/Migrations/InlineParameterFormatter.php b/lib/Doctrine/Migrations/InlineParameterFormatter.php index 29e152169..34c30e2d6 100644 --- a/lib/Doctrine/Migrations/InlineParameterFormatter.php +++ b/lib/Doctrine/Migrations/InlineParameterFormatter.php @@ -11,6 +11,7 @@ use function implode; use function is_array; use function is_bool; +use function is_float; use function is_int; use function is_string; use function sprintf; @@ -52,7 +53,7 @@ public function formatParameters(array $params, array $types): string return sprintf('with parameters (%s)', implode(', ', $formattedParameters)); } - private function formatParameter(mixed $value, string|int $type): string|int|null + private function formatParameter(mixed $value, string|int $type): string|int|float|null { if (is_string($type) && Type::hasType($type)) { return Type::getType($type)->convertToDatabaseValue( @@ -64,14 +65,14 @@ private function formatParameter(mixed $value, string|int $type): string|int|nul return $this->parameterToString($value); } - /** @param int[]|bool[]|string[]|array|int|string|bool $value */ - private function parameterToString(array|int|string|bool $value): string + /** @param int[]|bool[]|string[]|float[]|array|int|string|float|bool $value */ + private function parameterToString(array|int|string|float|bool $value): string { if (is_array($value)) { return implode(', ', array_map($this->parameterToString(...), $value)); } - if (is_int($value) || is_string($value)) { + if (is_int($value) || is_string($value) || is_float($value)) { return (string) $value; } diff --git a/tests/Doctrine/Migrations/Tests/InlineParameterFormatterTest.php b/tests/Doctrine/Migrations/Tests/InlineParameterFormatterTest.php index b2e3525fa..2eb8ba8c9 100644 --- a/tests/Doctrine/Migrations/Tests/InlineParameterFormatterTest.php +++ b/tests/Doctrine/Migrations/Tests/InlineParameterFormatterTest.php @@ -23,20 +23,23 @@ public function testFormatParameters(): void $params = [ 0 => 'string value', 1 => 1, - 2 => [1, true, false, 'string value'], - 3 => true, - 4 => false, - 5 => 'string value', - 6 => 1, - 7 => true, - 8 => false, - 9 => [1, true, false, 'string value'], + 2 => 1.5, + 3 => [1, true, false, 'string value'], + 4 => true, + 5 => false, + 6 => 'string value', + 7 => 1, + 8 => 1.5, + 9 => true, + 10 => false, + 11 => [1, true, false, 'string value'], 'named' => 'string value', ]; $types = [ Types::STRING, Types::INTEGER, + Types::FLOAT, Types::SIMPLE_ARRAY, Types::BOOLEAN, Types::BOOLEAN, @@ -46,11 +49,12 @@ public function testFormatParameters(): void 'unknown', 'unknown', 'unknown', + 'unknown', ]; $result = $this->parameterFormatter->formatParameters($params, $types); - $expected = 'with parameters ([string value], [1], [1,1,,string value], [], [], [string value], [1], [true], [false], [1, true, false, string value], :named => [string value])'; + $expected = 'with parameters ([string value], [1], [1.5], [1,1,,string value], [], [], [string value], [1], [1.5], [true], [false], [1, true, false, string value], :named => [string value])'; self::assertSame($expected, $result); }