diff --git a/src/Database/FieldTypeConverter.php b/src/Database/FieldTypeConverter.php index afdb17333ae..07913281ed1 100644 --- a/src/Database/FieldTypeConverter.php +++ b/src/Database/FieldTypeConverter.php @@ -14,6 +14,8 @@ */ namespace Cake\Database; +use Cake\Database\Type\OptionalConvertInterface; + /** * A callable class to be used for processing each of the rows in a statement * result, so that the values are converted to the right PHP types. @@ -49,6 +51,12 @@ public function __construct(TypeMap $typeMap, Driver $driver) $types = array_map(['Cake\Database\Type', 'build'], array_combine($types, $types)); $result = []; + foreach ($types as $k => $type) { + if ($type instanceof OptionalConvertInterface && !$type->requiresToPHPCast()) { + unset($types[$k]); + } + } + foreach ($map as $field => $type) { if (isset($types[$type])) { $result[$field] = $types[$type]; diff --git a/src/Database/Type/OptionalConvertInterface.php b/src/Database/Type/OptionalConvertInterface.php new file mode 100644 index 00000000000..1e4bc513aba --- /dev/null +++ b/src/Database/Type/OptionalConvertInterface.php @@ -0,0 +1,31 @@ +