1
0
mirror of synced 2025-02-02 13:31:45 +03:00

Fix hydration in a joined inheritance with simple array or json array

SimpleArrayType and JsonArrayType convert NULL value to an empty array, which fails the null check that is used to prevent overwrite
Fixes issue #5989
This commit is contained in:
Carl Vuorinen 2016-09-03 22:25:11 +03:00 committed by Marco Pivetta
parent dce0aeaa15
commit 7352b97b14

View File

@ -122,6 +122,9 @@ class SimpleObjectHydrator extends AbstractHydrator
continue; continue;
} }
// Check if value is null before conversion (because some types convert null to something else)
$valueIsNull = $value === null;
// Convert field to a valid PHP value // Convert field to a valid PHP value
if (isset($cacheKeyInfo['type'])) { if (isset($cacheKeyInfo['type'])) {
$type = $cacheKeyInfo['type']; $type = $cacheKeyInfo['type'];
@ -131,7 +134,7 @@ class SimpleObjectHydrator extends AbstractHydrator
$fieldName = $cacheKeyInfo['fieldName']; $fieldName = $cacheKeyInfo['fieldName'];
// Prevent overwrite in case of inherit classes using same property name (See AbstractHydrator) // Prevent overwrite in case of inherit classes using same property name (See AbstractHydrator)
if ( ! isset($data[$fieldName]) || $value !== null) { if ( ! isset($data[$fieldName]) || ! $valueIsNull) {
$data[$fieldName] = $value; $data[$fieldName] = $value;
} }
} }